由于某种原因,我的$ 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(' ', $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);
答案 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开头。