PHP计数问题?

时间:2010-08-20 06:26:26

标签: php mysql

由于某种原因,我的$ count首先显示数字1而不是0我真的不知道发生了什么我想要从0开始并先显示0然后显示0,依此类推,有人可以帮助我纠正这个问题问题

PHP代码。

function make_list ($parent = 0, $count = 0, $depth = 0) {
    global $link;

    if($count == 0){
        echo '<ol class="cat-width">';
    } else {
        echo '<ol class="cat-depth">';
    }

    foreach ($parent as $id => $cat) {
        if($cat['parent_id'] == '0'){
            echo '<li><input type="checkbox" name="cat[]" id="cat-' . $cat['id'] . '" value="' . $cat['id'] . '" />
                  <label for="cat-' . $cat['id'] . '" class="label-headers">' . $cat['category'] . '</label>';
        } else {
            $indent = str_repeat('&nbsp; ', $depth * 3);
            echo '<li>' . $indent . '<input type="checkbox" name="cat[]" id="cat-' . $cat['id'] . '" value="' . $cat['id'] . '" />
                  <label for="cat-' . $cat['id'] . '">' . $cat['category'] . '</label>';
        }

        if (isset($link[$id])) {
            make_list($link[$id], $count+1, $depth+1);
        }
            echo '</li>';
    }
        echo '</ol>';
}

$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC");
if (!$dbc) {
print mysqli_error();
} 

$link = array();

while (list($id, $parent_id, $category, $depth) = mysqli_fetch_array($dbc)) {
$link[$parent_id][$id] =  array('parent_id' => $parent_id, 'id' => $id, 'category' => $category, 'depth' => $depth);
}

make_list($link[0], $depth+1);

4 个答案:

答案 0 :(得分:3)

第一次拨打make_list应该是:

make_list($link[0],0, $depth+1);

而不是

make_list($link[0], $depth+1);

您尝试仅向$count提供默认值,而不会将默认值提供给$depth。这是不可能的。

您的来电make_list($link[0], $depth+1);实际上是将$depth+1分配给$count并使用0的默认值$depth

答案 1 :(得分:1)

尝试使用null或0作为第二个参数,并检查func_get_args()http://php.net/manual/en/function.func-get-args.php。在这种情况下你不需要设置函数参数。只需调用此函数即可获取您传递的所有参数并手动操作它。

答案 2 :(得分:0)

调用函数时,您将向深度添加1。这意味着在make_list函数深度内部,如果使用值-1调用,则仅为0。

答案 3 :(得分:0)

您的$ count无处显示。你的意思是1. 2. ...来自<ol>?据我所知,它始终以1开头。