Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义的偏移量0,如何设置此数组_Php_Sql_Undefined_Offset - Fatal编程技术网

Php 未定义的偏移量0,如何设置此数组

Php 未定义的偏移量0,如何设置此数组,php,sql,undefined,offset,Php,Sql,Undefined,Offset,你好,我有一个未定义的偏移量0。在这个代码里面 $q = mysql_query("SELECT * FROM category"); if (false === $q) { echo mysql_error(); } while ($r = mysql_fetch_row($q)) { $names[$r[0]] = $r[2]; $children[$r[0]][] = $r[1]; } function render_select($root=0, $level=-1)

你好,我有一个未定义的偏移量0。在这个代码里面

$q = mysql_query("SELECT * FROM category");
if (false === $q) {
    echo mysql_error();
}

while ($r = mysql_fetch_row($q)) {
  $names[$r[0]] = $r[2];
  $children[$r[0]][] = $r[1];
}

function render_select($root=0, $level=-1) {
  global $names, $children;
  if ($root != 0)
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>';
  foreach ($children[$root] as $child)
    render_select($child, $level+1);
}

echo '<select>';
render_select();
echo '</select>';
这是一个树格式的selectbox,我在这个问题中找到了这个代码


您的代码中存在一些歧义:

if ($root != 0)
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>';
  foreach ($children[$root] as $child)
    render_select($child, $level+1);

否则,在调用
render\u select
时,如果没有参数(或第一个参数值为“0”),您将尝试访问数组键“0”处的$children元素。正如您的错误所示,$children在该键处不包含值。

此处的代码存在一些歧义:

if ($root != 0)
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>';
  foreach ($children[$root] as $child)
    render_select($child, $level+1);

否则,在调用
render\u select
时,如果没有参数(或第一个参数值为“0”),您将尝试访问数组键“0”处的$children元素。正如您的错误所示,$children在该键处不包含值。

非常感谢,这确实是一个很大的错误,无论如何,错误消失了,但我的选择框是空的:(.. snif@DreaminMediaQueretaro只要$root=0,它就会保持为空,因为创建
标记的循环永远不会执行。您必须确定环境会导致
$root
不是“0”。好的,我尝试使用$root=1进行测试,我无法获得循环工作,只需获得类别with id=1,所以我猜我从哪里复制代码的答案…需要对他说的内容进行更多的定制,无论如何,这超出了我最近的学习,是否有一个简单、更容易、可能更大(写得更多)…可以理解(容易)的代码来构建(id、家长id、姓名)的选择框树Esstructure.非常感谢Hanks,这确实是一个很大的错误,无论如何,错误消失了,但我的选择框是空的:(.. snif@DreaminMediaQueretaro只要$root=0,它就会保持为空,因为创建
标记的循环永远不会执行。您必须确定环境会导致
$root
不是“0”。好的,我尝试使用$root=1进行测试,我无法获得循环工作,只需获得类别with id=1,所以我猜我从哪里复制代码的答案…需要对他说的内容进行更多的定制,无论如何,这超出了我最近的学习,是否有一个简单、更容易、可能更大(写得更多)…可以理解(容易)的代码来为(id、parent\u id、name)结构构建选择框树。谢谢
if ($root != 0)
{
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>';
    foreach ($children[$root] as $child)
    {
        render_select($child, $level+1);
    }
}