我有一段代码可以抓取类别,按字母顺序对它们进行排序(它们有几种语言可用),并返回每个类别的计数。问题是,由于某种原因,根本没有返回计数。我觉得问题就在这条线上:
(($categoryCounter) ? '<span class="cnt">(' . $categoryCounter . ')</span>' : '') .
我尝试将其更改为$ categoryCounter [$ key]或其他但不起作用的东西。不幸的是,我的PHP技能不足以找出我做错了什么。如果有人能看到我明显做错了什么,我会非常感谢一些帮助:)
这是完整的代码;
while ($cat_details = $db->fetch_array($sql_select_categories))
{
$categoryCounter = (COUNT_CATS == 1 && !empty($src_details['keywords_search'])) ? $cat_counter[$cat_details['category_id']] : $cat_details['items_counter'];
if ($categoryCounter > 0 || COUNT_CATS == 0) {
$cat_array[$cat_details['category_id']]["name"]=$category_lang[$cat_details['category_id']];
}
}
if (is_array($cat_array)) {
asort($cat_array);
foreach($cat_array as $key => $value){
$output .= '<tr> '.
' <td class="contentfont"><a href="' . $subcat_link . '">' . $category_lang[$key] . '</a> '.
(($categoryCounter) ? '<span class="cnt">(' . $categoryCounter . ')</span>' : '') .
' </td> '.
'</tr> ';
}
}
答案 0 :(得分:0)
如果$categoryCounter
为"0"
,则条件($categoryCounter)
将为false,因此您使用发布的代码,将输出空字符串,而不是<span
你期待的标签。
答案 1 :(得分:0)
这不能是整个代码,因为有些东西没有定义。为什么COUNT_CATS不以$开头? $ cat_array对象的布局是什么?是否有多列或“名称”是唯一的列?
首先,尝试将$添加到这些前面:
$COUNT_CATS == 1
$COUNT_CATS == 0
根据您提供的内容,$ categoryCounter将是您循环中的最高值:
while ($cat_details = $db->fetch_array($sql_select_categories))
但是目前你可能没有设置$ cat_array,因为$ categoryCounter可能永远不会是0,而COUNT_CATS可能有效也可能无效。
此外,$ cat_array对象可以在没有[“name”]部分的情况下分配,即
$cat_array[$cat_details['category_id']]=$category_lang[$cat_details['category_id']];
这将有$ cat_array [id] = $ category_lang [id],然后通过asort函数对其进行精细排序。 $ cat_array [id] [“name”] = $ category_lang [id]的排序方式不同,因为它现在是一个多维数组。