Alexi
Новичок
Списки смежности и рекурсия.
Здравствуйте.
Работаю с деревом иерархии. Использую списки смежности. Вот имеющийся массив:
Вопрос: нужно зная текущий news_id, построить массив с его родителями.
Например news_id равен 9, тогда массив его родителей будет выглядеть {8, 6, 2}
Использую для этого рекурсивную функцию, но когда происходить условие, при котором надо выйти из неё, выход происходит из одного уровня, а дальше всё равно происходит наполнение массива, в результате кривой результат.
Здравствуйте.
Работаю с деревом иерархии. Использую списки смежности. Вот имеющийся массив:
PHP:
Array
(
[0] => Array
(
[news_id] => 2
[parent_id] => 0
[title] => Новости сайта
[sorting] => 1
[a_tree] => Array
(
[0] => Array
(
[news_id] => 7
[parent_id] => 2
[title] => Новости сайта 3
[sorting] => 1
[a_tree] => Array
(
)
)
[1] => Array
(
[news_id] => 6
[parent_id] => 2
[title] => Новости сайта 2
[sorting] => 2
[a_tree] => Array
(
[0] => Array
(
[news_id] => 8
[parent_id] => 6
[title] => Новости сайта 121
[sorting] => 8
[a_tree] => Array
(
[0] => Array
(
[news_id] => 9
[parent_id] => 8
[title] => Новости сайта 1211
[sorting] => 91
[a_tree] => Array
(
)
)
)
)
)
)
[2] => Array
(
[news_id] => 5
[parent_id] => 2
[title] => Новости сайта 1
[sorting] => 3
[a_tree] => Array
(
)
)
)
)
[1] => Array
(
[news_id] => 1
[parent_id] => 0
[title] => Главные новости
[sorting] => 2
[a_tree] => Array
(
)
)
[2] => Array
(
[news_id] => 3
[parent_id] => 0
[title] => Музыкальные новости
[sorting] => 3
[a_tree] => Array
(
[0] => Array
(
[news_id] => 10
[parent_id] => 3
[title] => Муз. новость 1
[sorting] => 10
[a_tree] => Array
(
)
)
)
)
[3] => Array
(
[news_id] => 4
[parent_id] => 0
[title] => Ещё новости
[sorting] => 4
[a_tree] => Array
(
[0] => Array
(
[news_id] => 11
[parent_id] => 4
[title] => Ещё новость 1
[sorting] => 11
[a_tree] => Array
(
)
)
)
)
)
Например news_id равен 9, тогда массив его родителей будет выглядеть {8, 6, 2}
Использую для этого рекурсивную функцию, но когда происходить условие, при котором надо выйти из неё, выход происходит из одного уровня, а дальше всё равно происходит наполнение массива, в результате кривой результат.
