Обход многомерного массива в обратном порядке

KorP

Новичок
Что том не сегодня плохо гуглится, прошу помощи. Не могу придумать как решить задачу. Есть массив типа
Array
(
[0] => Array
(
[id] => 1
[parent_id] => 0
[name] => BBB
[child] => Array
(
[0] => Array
(
[id] => 4
[parent_id] => 1
[name] => AAA
[child] => Array (.....)
и т.д. вложенность может быть большая, так вот, в моём распоряжении есть id последнего элемента в последнем массиве, нужно - найти этот массив, получить [name] и [parent_id] и собственно запустить уже дальше искать следующий элемент по [parent_id], и так до самого верха. Собственно возник вопрос - а как мне найти этот последний элемент и самое главное - [name] и [parent_id] из него? array_search и аналоги возвращают лишь ключ, и как его можно использовать я что то не придумал.
пока в голове крутится только велосипед разбирать массив с начала и до последнего элемента, если [id]=$id значит это интересующая меня цепочка, если нет - смотрим дальше. но как мне кажется у этого велосипеда ещё и колёса треугольные.

подскажите в какую сторону капать?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
в какую сторону капать?
как там в анекдоте, "помнишь, тебя премии лишили? это я капнул ..."

объясни логику задачи на примере небольшого реального массива, и напиши что именно должно получиться в результате.
пока похоже на поиск родителей по дереву, но стоит проверить
я без форматирования не понимаю твою структуру
 

craz

Нестандартное звание
нестед сет есть возможность использовать? на понимание принципа построения деревьев уйдет не более получаса.
1)учим нестед сетс
2) ???????
3) PROFIT
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я бы просто добавил в каждый массив ссылку на массив верхнего уровня
 
  • Like
Реакции: AmdY

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ссылки
массивы
ключи подмассивов (parent_id) могут повторяться,
если все ключи уникальны - это просто оптимизация чтобы не обходить все дерево в поисках parent_id

нестед сетс - тоже решение, но построение дерева более затратно
 

jrip

Новичок
нестед сетс согласитесь все таки будет посереьезнее - причем один раз и навсегда
а причем тут нестед сетс? Может массив из xml получен?

По моему сам массив тогда стоит создавать по другому, к примеру как-то так:
PHP:
Array
(
[1] => Array(
   [id] => 1
   [parent_id] => 0
   [name] => BBB
   
),
[4] => Array
(
   [id] => 4
   [parent_id] => 1
   [name] => AAA
)
)
 
Сверху