Другие языки программирования и технологии

Помогите понять как построить многоуровневое меню

Есть БД:

id | parent_id | name
1 0 Первое меню верхнего уровня
2 1 Первое меню второго уровня
3 2 Второе меню второго уровня
4 0 Второе меню верхнего уровня

есть запрос SELECT * FROM `menu`

надо как-то создать массив в цикле, которые можно использовать для построения дерева меню
для начала вникните в суть рекурсии
Олег Ходоровский
Олег Ходоровский
5 108
Лучший ответ
Алгоритм вполне естественный.
Только надо правильно пользоваться терминологией.
Прежде всего меню - это не строка, а список строк-пунктов (иногда из одной строки, иногда пустой) . Этот список имеет имя и адрес (в программе) , а наименование (комментарий) и ссылка на этот список могут быть где угодно. Но если меню структурируется, то это обязательно найдётся в одной из ветвей полного меню.
Ясно как действует готовое меню: нужно открыть главное меню, выбрать элемент (пункт меню) который может оказаться или конечной командой или ссылкой на список-подменю. И так идём вглубь дерева от корня.

При необходимости можно, перейдя на нужный уровень меню добавить в меню или пункт- вызов команды, или пункт-подменю.
Если желательно создать-добавить группу пунктов на одном уровне, естественно можно применить цикл (но только отдельно для этого уровня в текущей ветви) . Разумеется, если в момент оформления одного пункта Вы уже его создали, то можно в него войти (выбрать) , и применив вложенный цикл, добавить подпункты, затем выйдя из цикла, продолжить оформлять остальные пункты первого уровня.

Но всё-таки для скорости чтения каждый список лучше оформлять компактно, не отвлекаясь, а нижний уровень создавать при втором проходе верхнего списка.
Вот пожалуй и всё, что можно посоветовать. Хотя в реальности меню может создаваться в произвольной очерёдности расширения ветвей дерева.