开发者

PHP count problem?

开发者 https://www.devze.com 2023-01-12 03:52 出处:网络
For some reason my $count displays the number 1 first instead of 0 I really don\'t know what\'s going on I want count to start at 0 and display 0 first then 1, 2 and so on can someone help me correct

For some reason my $count displays the number 1 first instead of 0 I really don't know what's going on I want count to start at 0 and display 0 first then 1, 2 and so on can someone help me correct this problem?

PHP code.

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);


The first call to make_list should be:

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

rather than

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

You are trying to give default value to $count only without giving default value to $depth. That is not possible.

Your call make_list($link[0], $depth+1); is actually assigning $depth+1 to $count and using the default value of 0 for $depth


try using null or 0 as second parameter and do check out func_get_args() http://php.net/manual/en/function.func-get-args.php. you wont need to set function parameters in this case. just call this function to get all the arguments you passed and manipulate it manually.


You're adding 1 to depth when calling the function. This means that inside the make_list function depth with only be 0 if called with a value of -1.


Your $count is nowhere displayed. Do you mean then 1. 2. ... from the <ol> ? As far as I can see it always starts with 1.

0

精彩评论

暂无评论...
验证码 换一张
取 消