重复的函数没有显示-语法错误
PHP Repeated function not showing - syntax error
我想做一个类别和子类别选择-所以当我按下一个类别时,它会在它旁边显示所有子类别。
我已经使它与html和js的工作,但现在我使它在我的网站动态
这是我现在使用的
var categories_0 = [
<?php while ( fanapom_has_categories() ) { ?>
["<?php echo fanapom_category_id() ; ?>","<?php echo fanapom_category_name() ; ?>"],
<?php } ?>
];
<?php while ( fanapom_has_categories() ) { ?>
var categories_<?php echo fanapom_category_id() ; ?> = [<?php while ( fanapom_has_subcategories() ) { ?>["<?php echo fanapom_category_id() ; ?>","<?php echo fanapom_category_name() ; ?>"],<?php } ?>];
<?php } ?>
但是我用了这段代码两次,但是我发现它只工作一次。
<?php while ( fanapom_has_categories() ) { ?>
如果我单独使用
var categories_0 = [
<?php while ( fanapom_has_categories() ) { ?>
["<?php echo fanapom_category_id() ; ?>","<?php echo fanapom_category_name() ; ?>"],
<?php } ?>
];
或单独
<?php while ( fanapom_has_categories() ) { ?>
var categories_<?php echo fanapom_category_id() ; ?> = [<?php while ( fanapom_has_subcategories() ) { ?>["<?php echo fanapom_category_id() ; ?>","<?php echo fanapom_category_name() ; ?>"],<?php } ?>];
<?php } ?>
我得到正确的输出
但是当我把它们混合在一起时,我只得到第一个的输出,
我怎样才能使它工作给我正确的输出?我想我不应该使用这段代码两次
<?php while ( fanapom_has_categories() ) { ?>
但我不知道如何将两者混合在一起-请帮助。
M O R E I N F O
下面是我想要的输出
var categories_0 = [
["1", "maincategoryname"],
["2", "maincategoryname"],
["3", "maincategoryname"],
["4", "maincategoryname"],
["5", "maincategoryname"],
["6", "maincategoryname"],
["7", "maincategoryname"],
["8", "maincategoryname"]
];
var categories_1 = [
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"]
];
var categories_2 = [
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"]
];
var categories_3 = [
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"]
];
var categories_4 = [
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"]
];
var categories_5 = [
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"]
];
var categories_6 = [
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"]
];
var categories_7 = [
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"]
];
var categories_8 = [
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"],
["subcategoryid", "subcategoryname"]
];
1 2 3 4 5 6 7 8是主要的类别id
下面是如何在示例中打印多维javascript数组的方法,假设数据源是PHP中的类似多维数组:
$categories = array(
"1" => array("one", array("1" => "a", "2" => "b", "3" => "c"))
, "2" => array("two", array("4" => "d", "5" => "e", "6" => "f"))
, "3" => array("three", array("7" => "g", "8" => "h", "9" => "i"))
);
$categories_js = 'var categories_0 = [';
$category_subs_js = '';
$delimiter1 = '';
$delimiter2 = '';
foreach ( $categories as $category_id => $category_info ) {
$categories_js .= $delimiter1 . '["' . $category_id . '", "' . $category_info[0] . '"]';
$delimiter1 = ', ';
$category_subs_js .= 'var categories_' . $category_id . ' = [';
foreach ( $category_info[1] as $subcat_id => $subcategory ) {
$category_subs_js .= $delimiter2 . '["' . $subcat_id . '", "' . $subcategory . '"]';
$delimiter2 = ', ';
}
$category_subs_js .= "];'n";
$delimiter2 = '';
}
$categories_js .= "];'n";
echo $categories_js;
echo $category_subs_js;
您的fanapom_has_
函数可能会耗尽迭代器,这将阻止您第二次获得列表。(原因#422835为什么可变的全局状态是邪恶的,顺便说一句。如果有选择的话,我建议您减少API对它们的依赖。仅仅因为WordPress这样做,并不意味着这是一个好主意。
为了解决这个问题,你需要以某种方式重置迭代器,或者同时为主类别和每个子类别构建数组(所以你只需要一次遍历列表)。
坦率地说,你最好不要浪费时间手工构建JSON。PHP有一个内置函数json_encode
来做这个。你所要做的就是构建数组。你可以一次完成。
也许像
<?php
$categories = [ [] ];
while (fanapom_has_categories()) {
$id = fanapom_category_id();
$categories[0][] = [ "$id", fanapom_category_name() ];
$categories[$id] = [];
while (fanapom_has_subcategories()) {
# btw, this looks odd to me, using the same function to get info on the
# category and subcategory, but using different functions to iterate through
# the respective lists.
$categories[$id][] = [ fanapom_category_id(), fanapom_category_name() ];
}
}
foreach ($categories as $id => $subcategories) {
echo "var categories_$id = ", json_encode($subcategories), ";'n";
}
?>
(注:[ item1, item2 ]
是PHP 5.4 spiff。如果您坚持使用旧版本的PHP,请使用array(item1, item2)
代替。
相关文章:
- Wing IDE 中咖啡脚本的语法突出显示
- Syncfusion JavaScript 网格未显示.语法和引用错误
- Markdown语法高亮显示未按预期工作
- 动态更新Ace Editor+Requirejs的语法高亮显示
- 无法在jsx中使用条件语法显示找不到的信息
- 在Notepad++中更好地突出显示Javascript语法
- 如何在JavaScript中实现html语法高亮显示
- 如何在Sublime中语法突出显示JavaScript字符串中的HTML
- 显示语法错误的 J 查询
- Atom 中的 atom-typescript 不会捕获错误或在打字稿文件中显示语法颜色
- 显示语法错误的 JavaScript 中断标签
- Javascript发布数组显示语法错误
- 在浏览器控制台的less.css中显示语法错误
- 重复的函数没有显示-语法错误
- ecmascript harmony - Yield显示语法错误;在javascript中缺失;
- 需要在我的网页上显示语法突出显示的源代码
- Firefox扩展调试-如何在错误控制台中显示语法错误信息
- 在IE7浏览器jQuery v1.7.1中显示语法错误
- 我正在动态创建复选框列表,但它显示语法错误
- 使用Javascript突出显示语法代码