使用php从平面数组创建多维数组

时间:2014-09-28 18:22:20

标签: php arrays multidimensional-array

我对以下代码感到有些困惑,因为它没有在数组中包含没有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的元素,但我需要将它包含在最终数组中。

非常感谢任何帮助。

解决

0 个答案:

没有答案