我对以下代码感到有些困惑,因为它没有在数组中包含没有child的元素。我的代码是
$arr = array
(
array
(
'id' => 66,
'parent_id' => 26,
'ptitle' => 'slider container',
)
,
array
(
'id' => 47,
'parent_id' => 26,
'ptitle' => 'Landing Page',
)
,
array
(
'id' => 48,
'parent_id' => 66,
'ptitle' => 'Link 1',
)
,
array
(
'id' => 49,
'parent_id' => 66,
'ptitle' => 'Link 2',
)
,
);
$new = array();
foreach ($arr as $a){
$new[$a['parent_id']][] = $a;
}
$tree = createTree($new, array($arr[0]));
echo "<pre>";
print_r($tree);
echo "</pre>";
function createTree(&$list, $parent){
$tree = array();
foreach ($parent as $k=>$l){
if(isset($list[$l['id']])){
$l['children'] = createTree($list, $list[$l['id']]);
}
$tree[] = $l;
}
return $tree;
}
当循环从$ arr [0]的数组的第一个元素开始时,这就是为什么它不考虑id为47的元素,但我需要将它包含在最终数组中。
非常感谢任何帮助。
解决