parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

сделать необычное дерево

527 28.09.2004 22:13

Здраствуйте!
Возникла необходимость в построении не совсем тривиального дерева.
Т.е. само дерево строится по тому же принципу что в примерах, но необходимо из этого дерева(обычного) удалить ненужные ветки и получится нетривиальное.
А именно нужно взять некоторый условный узел(это будет текущая страница) выбрать всех детей, далее всех братьев, потом нужно сделать текущим родителя и для него выбрать всех братьев, потом сделать текущим родителя родителя и для него выбрать всех братьев и так далее до самого старшего предка.
т.е. если графически:
x - выбираем
о - не выбираем

  _________________________________х_________________________________    	nesting =1
  |                        |                 |                      |
  х                        х         ________х________              х		nesting =2
о о о                    о о о       х       х        х           о о о		nesting =3
                                   о о о   х х х    о о о
                                           | | |
                                           | | |
                                           | | +--x x x							nesting =4
                                           | |
                                           | +-- o o o o
                                           |
                                           +--- o o o o o
само дерево собирается в xml так же как в примерах, но вот таблицу с узлами хочется отфильтровать перед построением дерева,
у каждого узла есть id, parent_id и nesting(уровень вложенности)
$отобранные_узлы[^таблица_узлов.select($таблица_узлов.parent_id = $текущий_узел.parent_id || $таблица_узлов.nesting <= ^eval($текущий_узел.nesting) || $таблица_узлов.parent_id = $текущий_узел.id)]
но это дает на верный результат.
как это реализовать?