在PHP中从数组构建多维数组
发布时间:2020-12-13 16:24:09 所属栏目: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'
我想从数组构建一个多维数组.比如我想
$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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |