Деревовидный массив

maxvd

Новичок
Деревовидный массив

Первый раз обрашаюсь за помощью в форум так что извините если что не так
или вопрос глупый
Суть вот в чем:
Существует таблица mysql деревовидная структура: "id", "parent", и менее важные поля
Гдето 500 записей вложеность 5. Так как запросов очень много
(часто надо получить ветвь по "id" и для получения ветви используется самый примитивный метод (рекурсия)). Подумал а зачем мне нагружать сервер запросами размер таблицы не большой таблица практически постоянна, решил полностью загрузить таблицу в массив, а его в сессию
Массив получился вида (привык уже с ним работать)
PHP:
	array('0' => array('name' =>...,    'id' => '1' ,   'sub' => array('0'=> array('name' =>...
Все хорошо а дальше как из этого массива мне получить ветвь если известно только $id
(цивилизованно без рекурсии)
Промучился уже 4 часа и ничего путного не придумал

P.S. Из последнего моего бреда
$string var_export($array, true)ж
удаляем все пробельные символы и переносы строки
strchr($string, "array('id'=>'$id')
а дальше как мне отрезать при помоши регуларных выражении (я в них не силен
но мне кажется это единственный способ) ненужный хвост
если это получится
$array_res=eval($string) и готово
может есть менее наркоманский способ чем я придумал
 

maxvd

Новичок
(цивилизованно без рекурсии)
Все что нашол это таже рекурсия
(ее могу написать и сам) и всякие хитрые запросы в базу
Меня интересует это есть ли другой способ получить поддерево из массива (а не из базы) по заданному условию.
 

maxvd

Новичок
Деревья в базах данных => Вложенные множества
Все запросы в поиск туда привели, может плохо искал
 

Gorynych

Посетитель PHP-Клуба
maxvd а рекурсия - это вполне цивилизованно. Не забивайте голову, Вы хотите найти подчасть дерева по идентификатору ничего более о нем не зная.

конечно, надо пробегать дерево до тех пор, пока исковый идентификатор не будет найден. Как пробегать? Естественно - рекурсивно. Аминь.
 

Фанат

oncle terrible
Команда форума
можно, просто, делать дерево заранее другим - добавлять в запись не только идентификатор родителя, но другую информацию. об этих способах и рассказано в базе знаний клуба.
а если кроме родителя ничего нет, то и способов ты больше никаких не придумаешь
 

maxvd

Новичок
Фанат большое спасибо это все что я хотел узнать либо да и как либо конкретное нет
 
Сверху