Вложенный список навигации PHP / HTML, дающий неожиданные результаты - PullRequest
0 голосов
/ 23 марта 2011

Я пишу рекурсивное навигационное меню на PHP для упрощения организации и расширения.Сейчас я использую некоторые примеры из Diablo II, чтобы заставить вложение работать правильно.

Рекурсивный цикл дает мне странные результаты.Иногда он возвращает только одну букву в отличие от имени / URL массива и не повторяется через все элементы.

Это немного сложно объяснить, и моя главная проблема в том, что я не оченьпонять, как отладить это.Вероятно, это что-то простое, что я не могу понять.

Чтобы сэкономить время, я создал страницу с источником (выделен синтаксис) и вывел здесь:

http://radleygh.com/files/test/example.php

Это должно облегчить просмотр происходящего.

Структура списка должна выглядеть следующим образом (имя и UL каждой группы содержатся в одном и том же элементе LI):

ul
  li 
    Parent Title #1
    ul
      li
        Child Title #1
      li 
        Child Title #2
    /ul
  li
    Parent Title #2
/ul

PS: Есть ли лучший способ сортировки огромного массива, подобного тому, который у меня есть?

Спасибо.Вернуться к отладке сейчас

1 Ответ

0 голосов
/ 23 марта 2011

Вы были довольно близко. В чем ваша ошибка - в функции recurse_array. Вы передаете ему элементы одномерного массива (я знаю, что это технически несколько измерений, заданных $element[2], но первые два элемента одиночные :)), поэтому, когда он захватывает это, он слова должны быть разбиты на их собственные массивы.

Попробуйте это:

function recurse_array($element) {
    echo "<ul>\n";
    echo "  <li>"."<a href='{$element[1]}'>{$element[0]}</a>\n";
    if (is_array($element[2])) {
        echo recurse_array($element[2]);
    }
    echo "  </li>\n";
    echo "</ul>";
}

Это должно дать вам то, что вы ищете, или, по крайней мере, что-то немного ближе к тому, что вы ищете.

...