php数组 - 没有获得预期的输出

时间:2012-08-08 00:12:50

标签: php arrays

我有一段代码可以抓取类别,按字母顺序对它们进行排序(它们有几种语言可用),并返回每个类别的计数。问题是,由于某种原因,根本没有返回计数。我觉得问题就在这条线上:

(($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> ';

    }
}

2 个答案:

答案 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]的排序方式不同,因为它现在是一个多维数组。