вертикальное меню <ul><li>

Gibiskus

Новичок
Здравствуйте, мне нужно сделать такое двухуровневое(трехурв) меню:
<ul id="my-menu">
<li>1</li>
<li>2<ul>
<li>2.1</li>
<li>2.2</li></ul></li>
</ul>
ко мне заходит массив такой:
[1]=>
array(13) {
["node_id"]=>
string(3) "161"
["lft"]=>
string(1) "1"
["rgt"]=>
string(2) "18"
["lvl"]=>
string(1) "0"
["payload"]=>
string(35) "Категория 1"
["childs"]=>
string(1) "8" /// кол-во детей для категория 1
}
Не могу допереть как закрыть теги. Можно найти категории где есть дети, категории одного уровня, но трудности c тем как найти последние, -можно найти последних детей отдельным циклом, тогда как потом определять принадлежность этих детей к родительским категориям? Подскажите пожалуйста как решить?
P.S уже писал вопрос тут
 

tz-lom

Продвинутый новичок
хранишь дерево в виде вложенных интервалов? отсортируй по левой границе и итерируйся , в стеке храни правые границы,по ним сможешь определять когда у тебя заканчивается подуровень, ну а размер стека будет глубиной подуровня
 

KorP

Новичок
Столько времени решать такую задачу? Уже бы давно открыл поиск по форуму и нашёл 100500 примеров и столько же аналогичных вопросов, со всеми необходимыми ссылками.
 

Gibiskus

Новичок
хранишь дерево в виде вложенных интервалов?
почитал, что будет "вложенные множества" если используются вложенные интервалы или наоборот?
отсортируй по левой границе и итерируйся
это понятно, кроме как что хотел что бы класс ns этим занялся(там и запрос "взрослый" "не мой") и кол-во детей в массив вставк для каждой записи. Только это не помогло к сожалению в поставленной мной себе задаче))
в стеке храни правые границы, по ним сможешь определять когда у тебя заканчивается подуровень, ну а размер стека будет глубиной подуровня
очень интересно было бы узнать детали, логично что все дети для категории по правой границе будут меньше плюс я так понял они четные все, - только знаний не хватило понять как обработать т.к этих границ будет много и нужно для каждой из них это сделать.
Столько времени решать такую задачу? Уже бы давно открыл поиск по форуму и нашёл 100500 примеров и столько же аналогичных вопросов, со всеми необходимыми ссылками.
вопрос конечно было бы можно быстро решить добавив поле парент_ид, при этом перелопатив добавление,удаление, смещение, или вообще забыть про ns и как то обычно сделать, но надо же обучиться за 2009 да? уже 2 года прошло а то и больше.
Да я полез искать на форуме, кстати найти можно больше чем в гугле (может я и не там искал) , - были найдены подобные темы 1,2 касательновывода дерева в штмл, и пока все.
 

KorP

Новичок
уже 2 года прошло а то и больше.
и?

Да я полез искать на форуме, кстати найти можно больше чем в гугле (может я и не там искал) , - были найдены подобные темы 1,2 касательновывода дерева в штмл, и пока все.
да их тут навалом
 

tz-lom

Продвинутый новичок
и что что их будет много? если откинуть сортировку (которую можно переложить на SQL) , это o(n) алгоритм, ты хочешь что то ещё более быстрое? :)
http://phpclub.ru/faq/Tree?v=w5u тут смотри на тему интервалов и множеств
 
Сверху