【发布时间】:2023-03-21 11:30:02
【问题描述】:
我想从一个数组构建一个多维数组。比如我想
$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',
1 => 'Trunk',
2 => 'Branch',
3 => 'Limb',
4 => 'Apple',
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;
}
【问题讨论】:
-
这是一个很好的例子,说明为什么递归在大多数情况下不一定是个好主意。展开递归通常非常容易,这样做通常会更快、占用更少、更容易理解代码。
标签: php arrays function recursion multidimensional-array