Сортировка иерархии смежности для простого вывода цикла

Я стараюсь не использовать несколько SQL-запросов. Может ли кто-нибудь, пожалуйста, указать мне в правильном направлении?

Конечным результатом является меню навигации по веб-сайту (ul / li) с вложенными ссылками (выпадающее меню) для некоторых ссылок.

Данные поступают из PDO в виде массива объектов. Я полагаю, что моя структура называется списком смежности, где каждая запись имеет родительский идентификатор, который соответствует идентификатору ссылки, под которой она вложена, parent_id = 0 / NULL, являющийся верхним уровнем. Каждая ссылка также имеет приоритет (номер, по которому их можно заказать).

Я требую, чтобы приоритет имел отношение только к ссылкам на одном и том же «уровне».

Для вывода HTML мне действительно нужны данные в их иерархическом порядке. Я полагал, что функция uasort могла бы достичь этого с помощью пользовательской функции сравнения, но я изо всех сил пытаюсь заставить ее сделать что-нибудь понятное. Uasort даже делает это возможным?

Другие способы, которые, как мне показалось, могли бы помочь, заключались в самостоятельном объединении SQL-запросов или, возможно, в цикле по массиву для создания объекта, в котором ссылки «level2» находились в ветви его родителя (как можно было ожидать в иерархии XML).

Учитывая, что мои текущие планы требуют только 2 уровня, и не будет миллиона записей для «подзапроса», просто скажите мне, если вы считаете, что я должен уступить и просто использовать несколько запросов.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …