Php 未定义的偏移量0,如何设置此数组
你好,我有一个未定义的偏移量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)
$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);
}
}