将1d数组转换为多维数组


Convert 1d array to multidimensional array

我有一个非常简单的问题,但现在,我似乎无法解决它。

我有一个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);