微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在PHP中从数组构建多维数组

我想从数组构建一个多维数组.比如我想
$test = array (
0 => 'Tree',1 => 'Trunk',2 => 'Branch',3 => 'Limb',4 => 'Apple',5 => 'Seed'
);

成为

$test = 
array (
   'Tree' => array (
       'Trunk' => array (
           'Branch'  => array (
               'Limb'  => array (
                   'Apple'  => array (
                       'Seed' => array ()
                   )
               )
           )
       )
   )
);

或者更简单

$result[Tree][Trunk][Branch][Limb][Apple][Seed] = null;

我试图用递归函数做这个,但是我达到内存限制,所以我显然做错了.

<?PHP
$test = array (
0 => 'Tree',5 => 'Seed'
);



print_r($test);





print "results of function";

print_r(buildArray($test));



function buildArray (&$array,&$build = null)
{
    if (count($array) > 0)
    {

        //create an array,pass the array to itself removing the first value



        $temp = array_values($array);   
        unset ($temp[0]);           
        $build[$array[0]] =  $temp;


        buildArray($build,$temp);



        return $build;
    }

    return $build;


}
这个函数递归地工作并且可以解决问题:
function buildArray($from,$to = []) {  
    if (empty($from)) { return null; }
    $to[array_shift($from)] = buildArray($from,$to);
    return $to;
}

在您的代码中,我希望您看到错误.你在第一次迭代中讨论$build,就好像它是一个数组,而你将它认为null.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐