У меня есть массив, который вызывается вызовом функции рекурсии на основе родительского id. Этот массив представляет собой многомерный массив уровня n. Я хочу разбить этот массив на одномерное, чтобы каждый ребенок приходил сразу после своего родителя. Я использую следующую функцию для первого преобразования в рекурсивное дерево.Как преобразовать многомерный рекурсивный массив в одномерный массив в PHP?
function formatTree($tree, $parent){
$tree2 = array();
foreach($tree as $i => $item){
if($item['cat_parent_id'] == $parent){
$tree2[$item['cat_id']] = $item;
$tree2[$item['cat_id']]['submenu'] = formatTree($tree, $item['cat_id']);
}
}
return $tree2;
}
Это массив, который у меня есть.
Array
(
[58] => Array
(
[cat_id] => 58
[cat_name] => Desserts
[cat_parent_id] => 0
[submenu] => Array
(
[535] => Array
(
[cat_id] => 535
[cat_name] => dessert child
[cat_parent_id] => 58
[submenu] => Array
(
)
)
)
)
[56] => Array
(
[cat_id] => 56
[cat_name] => Biryani & Rice
[cat_parent_id] => 0
[submenu] => Array
(
)
)
)
Вот как я этого хочу.
Array
(
[0] => Array
(
[cat_id] => 58
[cat_name] => Desserts
[cat_parent_id] => 0
[submenu] => Array
(
)
)
[1] => Array
(
[cat_id] => 535
[cat_name] => dessert child
[cat_parent_id] => 58
[submenu] => Array
(
)
)
[2] => Array
(
[cat_id] => 56
[cat_name] => Biryani & Rice
[cat_parent_id] => 0
[submenu] => Array
(
)
)
)
Ответ на этот вопрос в целом не существует. В вашем конкретном случае вы можете использовать рекурсивную функцию, которая вызывает себя в подменю данного узла, если она не пуста. – GordonM