2014-10-16 120 views
0

我有一个非常简单的问题,但现在,我似乎无法围绕它来包裹我的头。将一维数组转换为多维数组

我有一维数组,例如:

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

我想将其转换为:

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

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

回答

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); 
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)); 
+0

唉唉42,生命值,宇宙和万物的终极问题... :) – 2016-08-29 19:03:27