【发布时间】:2015-11-11 08:45:26
【问题描述】:
我有一个数组,它是通过基于父 ID 调用递归函数得出的。该数组是一个 n 级多维数组。 我想要的是把这个数组分解成一维的,这样每个孩子就在他们的父母之后。 我正在使用以下函数首先转换为递归树。
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
(
)
)
)
【问题讨论】:
-
一般来说,没有万能的答案。在您的特定情况下,您可以使用递归函数,如果它不为空,则在给定节点的子菜单上调用自身。
标签: php multidimensional-array