2011-06-06 105 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; 
} 

感謝您的答案,在我的解決辦法的意見,歡迎=)