我有一个非常简单的问题,但现在,我似乎无法解决它。
我有一个1D阵列,例如:
$array = array("file", "video", "url")
我想把它转换成:
$array["file"]["video"]["url"] = array();
现在,我不知道我的第一个数组中会有多少元素,所以我不能做出任何假设。此外,对于这个特定的问题,我不能使用树结构,它需要是一个数组。
优雅地使用递归
function nested($keys, $value) {
return $keys ?
array($keys[0] => nested(array_slice($keys, 1), $value))
: $value;
}
print_r(nested(array("file", "video", "url"), 42));
构建相当简单
$array = array("file", "video", "url");
$newArray = array();
$newEntry = &$newArray;
foreach($array as $value) {
$newEntry[$value] = array();
$newEntry = &$newEntry[$value];
}
unset($newEntry);
var_dump($newArray);