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

  • Автор темы Автор темы KorP
  • Дата начала Дата начала

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 значит это интересующая меня цепочка, если нет - смотрим дальше. но как мне кажется у этого велосипеда ещё и колёса треугольные.

подскажите в какую сторону капать?
 
в какую сторону капать?
как там в анекдоте, "помнишь, тебя премии лишили? это я капнул ..."

объясни логику задачи на примере небольшого реального массива, и напиши что именно должно получиться в результате.
пока похоже на поиск родителей по дереву, но стоит проверить
я без форматирования не понимаю твою структуру
 
нестед сет есть возможность использовать? на понимание принципа построения деревьев уйдет не более получаса.
1)учим нестед сетс
2) ???????
3) PROFIT
 
я бы просто добавил в каждый массив ссылку на массив верхнего уровня
 
  • Like
Реакции: AmdY
ссылки
массивы
ключи подмассивов (parent_id) могут повторяться,
если все ключи уникальны - это просто оптимизация чтобы не обходить все дерево в поисках parent_id

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

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