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

时间:2014-10-16 21:03:37

标签: php arrays multidimensional-array

我有一个非常简单的问题,但就目前而言,我似乎无法绕过它。

我有一维数组,例如:

$array = array("file", "video", "url")

我想将其转换为:

$array["file"]["video"]["url"] = array();

现在,我事先不知道我的第一个数组中有多少元素,所以我无法做出任何假设。此外,我不能使用树结构来解决这个特殊问题,它需要是一个数组。

2 个答案:

答案 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);