Я пытаюсь создать массив массивов, чтобы создать динамическое меню, но я теряюсь среди кода. Мой результат выглядит следующим образом:Создание php-массивов из sql-запросов
$menu = Array (
[0] => Array (
[text] => Home
[class] => 875
[link] => //Home
[show_condition] => TRUE
[parent] => 0
)
[1] => Array (
[text] => About
[class] => 326
[link] => //About
[show_condition] => TRUE
[parent] => 0
)
etc
etc
etc
[339] => Array (
[text] => Planner
[class] => 921
[link] => //Planner
[show_condition] => TRUE
[parent] => 45
)
)
И эти две функции, которые должны строить меню являются:
function build_menu ($menu) {
$out = '<div class="container4">' . "\n";
$out .= ' <div class="menu4">' . "\n";
$out .= "\n".'<ul>' . "\n";
for ($i = 1; $i <= count ($menu)-1; $i++)
{
if (is_array ($menu [ $i ])) {//must be by construction but let's keep the errors home
if ($menu [ $i ] [ 'show_condition' ] && $menu [ $i ] [ 'parent' ] == 0) {//are we allowed to see this menu?
$out .= '<li class="' . $menu [ $i ] [ 'class' ] . '"><a href="' . $menu [ $i ] [ 'link' ] . '">';
$out .= $menu [ $i ] [ 'text' ];
$out .= '</a>';
$out .= get_childs ($menu, $i);
$out .= '</li>' . "\n";
}
}
else {
die (sprintf ('menu nr %s must be an array', $i));
}
}
$out .= '</ul>'."\n";
$out .= "\n\t" . '</div>';
return $out . "\n\t" . '</div>';
}
function get_childs ($menu, $el_id) {
$has_subcats = FALSE;
$out = '';
$out .= "\n".' <ul>' . "\n";
for ($i = 1; $i <= count ($menu)-1; $i++)
{
if ($menu [ $i ] [ 'show_condition' ] && $menu [ $i ] [ 'parent' ] == $el_id) {//are we allowed to see this menu?
$has_subcats = TRUE;
$add_class = (get_childs ($menu, $i) != FALSE) ? ' subsubl' : '';
$out .= ' <li class="' . $menu [ $i ] [ 'class' ] . $add_class . '"><a href="' . $menu [ $i ] [ 'link' ] . '">';
$out .= $menu [ $i ] [ 'text' ];
$out .= '</a>';
$out .= get_childs ($menu, $i);
$out .= '</li>' . "\n";
}
}
$out .= ' </ul>'."\n";
return ($has_subcats) ? $out : FALSE;
}
Но меню отказывается показать любые уровни подменю - он отображает только верхний уровень. Есть идеи?
Спасибо!
Я думаю, что это действительно близко к работе, но теперь я получаю это сообщение об ошибке Примечание: Неопределенное смещение: 373 в sitemap2.php on line 24 menu nr 373 должен быть массивом Запрос возвращает 373 строки, поэтому последний делает что-то смешное. Есть идеи? – MrFidge
Что такое строка 24 'sitemap2.php'? –
отредактировал все это в мой ответ – MrFidge