Привет, у меня есть 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) { 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>';
Точная строка, в которой ошибка:
foreach ($children[$root] as $child) render_select($child, $level+1);
Это для selectbox с древовидным форматом, я нашел этот код в этом вопросе
Более эффективная иерархическая система
В вашем коде есть некоторая двусмысленность:
if ($root != 0) echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; foreach ($children[$root] as $child) render_select($child, $level+1);
Если вы пытаетесь выполнить эти три строки только в том случае, если $root != 0
, вам нужно добавить фигурные скобки следующим образом:
if ($root != 0) { echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; foreach ($children[$root] as $child) { render_select($child, $level+1); } }
В противном случае, в любое время render_select
вызывается без параметра (или с первым значением параметра '0'), вы попытаетесь получить доступ к элементу $ children в ключе массива '0'. Как показывает ваша ошибка, $ дети не содержат значения этого ключа.