PHP函数输出搞乱

时间:2014-05-05 18:46:34

标签: php

我正在尝试让函数打印每个父项中的子项目数,但似乎无法使其工作。出于某种原因,print_r(count($arr[$key]['children']))首先输出,然后循环遍历其余部分并将数字1放在应该返回计数的位置。

function create_list($arr)
{
    $html = "";
    foreach($arr as $key => $value) {
        if(count($value['children']) > 0) {
            $html .= $value['name'].' (' . print_r(count($arr[$key]['children'])) . ')<ul>';

            foreach($value['children'] AS $child) {
                $html .= '  <li><a id="'.$child['menu_item_id'].'">'.$child['name'].'</a></li>';
            }

            $html .= '  </ul>
                        ';
        } else{
            $html .= '  <a class="menuitem" id="'.$value['menu_item_id'].'">'.$value['name'].'</a>';
        }
    }

    return $html;
}

    echo create_list($menu_items);

输出以下内容:

22Main Task (1)
 o second task
 o sub task
George (1)
 o test
 o tester

如果它表示22MainTask,则22是每个根级别项目的计数结果。什么是返回计数的正确方法?我希望能够打印(2/5)任务完整类型,但如果我至少可以让它返回一个准确的计数,这将是一个伟大的第一步。

1 个答案:

答案 0 :(得分:1)

添加第二个参数以返回值,而不是立即打印它。

  

print_r($ data,true)

在您的示例中,它会打印&#34; 1&#34;因为如果你不提供第二个参数为true,print_r会返回true(转换为&#34; 1&#34;)。