PHP: цикл по многомерному массиву и установление родительско-дочерних отношений между элементами массива

Я занимаюсь разработкой системы управления контентом и столкнулся с проблемой дочерних и родительских отношений элементов в CMS.

В основном у меня есть система, которая может создавать страницы, и когда страница создается, вы можете выбрать родительскую страницу для суб-навигации. Это все нормально и модно, пока я не попытаюсь сгенерировать навигацию из БД.

Я не уверен, что какое-то объединение будет лучше, но я предпочитаю получать все данные в массиве и манипулировать массивом с помощью php.

Мой массив результатов из БД выглядит так:

Array
(
    [0] => Array
    (
        [id] => 27
        [name] => home
        [link] => home.html
        [parent] => 0
    )

    [1] => Array
    (
        [id] => 30
        [name] => about
        [link] => about.html
        [parent] => 27
    )
)

Мне нужно перебрать массив, подобный этому, который может иметь любое количество переходов, и разумно отсортировать его по родительским дочерним отношениям. Я смог сделать это, но только на один уровень глубиной. Он должен управлять детьми с детьми с детьми и т. Д. С бесконечным числом слоев и выводить его в неупорядоченные вложенные списки HTML.

<ul>
  <li>
  <a>Nav</a>
     <ul>
        <li>
           <a>Subnav</a>
             <ul>
                 <li>
                    <a>Sub Sub nav</a>
                 </li>
             </ul>
        </li>
     </ul>
  <li>
<ul>

И т.д. ...

Ответы на вопрос(4)

Ваш ответ на вопрос