Получить путь к родительскому узлу массива (parent / child)

Учитывая следующий массив:

array(..) {
[1111]=>
&array(3) {
["category_id"]=>
int(1111)
["parent_id"]=>
int(0)
["children"]=>
array(2) {
[2222]=>
&array(3) {
["category_id"]=>
int(2222)
["parent_id"]=>
int(1111)
["children"]=>
array(2) {
[5555]=>
&array(1) {
["category_id"]=>
int(5555)
["parent_id"]=>
int(2222)
}
}
[3333]=>
&array(2) {
["category_id"]=>
int(3333)
["parent_id"]=>
int(1111)
}
}

Предполагая, что глубина массива неизвестна, Как я могу определить путь к родительскому узлу?

Например, для category_id = 5555 Я должен получить следующий результат: 0, 1111,2222, За category_id = 3333 это было бы 0,1111

0

Решение

Один подход:

function findParent($node, $array, &$parents) {
if (array_key_exists($node, $array)) {
$parents[] = $array[$node]['parent_id'];
}
else {
foreach ($array as $item) {
if (array_key_exists('children', $item)) {
$parents[] = $item['parent_id'];
findParent($node, $item['children'], $parents);
}
}
}
}

findParent(5555, $A, $parents);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]