我有一个非常简单的问题,但就目前而言,我似乎无法绕过它。
我有一维数组,例如:
$array = array("file", "video", "url")
我想将其转换为:
$array["file"]["video"]["url"] = array();
现在,我事先不知道我的第一个数组中有多少元素,所以我无法做出任何假设。此外,我不能使用树结构来解决这个特殊问题,它需要是一个数组。
答案 0 :(得分:3)
优雅地,使用递归
function nested($keys, $value) {
return $keys ?
array($keys[0] => nested(array_slice($keys, 1), $value))
: $value;
}
print_r(nested(array("file", "video", "url"), 42));
答案 1 :(得分:1)
相当简单的构建
$array = array("file", "video", "url");
$newArray = array();
$newEntry = &$newArray;
foreach($array as $value) {
$newEntry[$value] = array();
$newEntry = &$newEntry[$value];
}
unset($newEntry);
var_dump($newArray);