2011-06-06 59 views
1

我有以下阵列:PHP创建动态Mulidimensional阵列

$myArray = array(0=>'Zero', 
      1=>'One', 
      2=>'Two', 
      3=>'Three', 
      4=>'Four'); 

,我想它的格式如下:

$newArray = array('One'=> 
       array('Two'=> 
        array('three'=> 
         array('four'=> 
         array('five'=> 
          array()))))); 

这可能是无限的水平,尽管更真实地约1-6深层次。

回答

0
$newArray=array(); 
$current = &$newArray; 
foreach($myArray as $v) { 
    $current[$v] = array(); 
    $current = &$current[$v]; 
} 

观看直播&免费在这里:http://codepad.org/utESnGiv
不可克服的4行代码。

1

像这样的东西应该做的:

$myArray = array(0=>'Zero', 
    1=>'One', 
    2=>'Two', 
    3=>'Three', 
    4=>'Four'); 

$myRecursiveArray = array(); 
$l = count($myArray); 
for($i = $l; 0 < $i; --$i) 
{ 
    $myRecursiveArray = array($myArray[$i - 1]=> $myRecursiveArray); 
} 

职场英语对话具有更短的答案,但它留下你的数组中的参考。如果这是您需要的,可能没有影响。

+0

嗨,我不认为有我的数组:) – dynamic 2011-06-06 23:49:42

+0

奇怪内部的任何refernces,似乎有一。尝试在$ newArray上使用var_dump。键'Four'下的最后一个数组将是一个引用([“Four”] =>&array(0))。我在那里错过了什么? – Coyote 2011-06-07 01:47:30

1

今天早上排序它,显然答案是睡觉!

继承人我的解决方案

$myNewArray = array(); 
$myArray = explode('->',"Zero->One->Two->Three"); 
$myArray = array_reverse($myArray); 

foreach($myArray as $key => $value) { 
    $myTempArray = $myNewArray; 
    unset($myNewArray); 
    $myNewArray[$value] = $myTempArray; 
} 

感谢您的答案,在我的解决办法的意见,欢迎=)