Undefined Offset 0, как я могу установить этот массив

Привет, у меня есть 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'. Как показывает ваша ошибка, $ дети не содержат значения этого ключа.