2010-11-30 168 views
1

我試圖將元素添加到子陣列將它們在先前的迭代添加,即一個子陣列轉化這樣的:元素添加到子陣列遞歸

$a = array('a', 'b', 'c'); 

進入這個:

$new_array = array(
    'a' => array(
     'b' => array(
      'c' => array() 
     ) 
    ) 
); 

回答

3
$a = array('a', 'b', 'c'); 

$tmp = array_reverse($a); 

$new_array = array(); 
foreach ($tmp as $item) { $new_array = array($item => $new_array); } 
+0

簡單的方法。這對我有用,謝謝。 – 2010-11-30 11:16:58

1
function makeArrayChain($chain) 
{ 
    $key = array_shift($chain); 

    if ($key === NULL) { 
     return array(); 
    } else { 
     return array($key => makeArrayChain($chain)); 
    } 
} 

var_dump(makeArrayChain(array('a', 'b', 'c')); 

array(1) { 
    ["a"]=> 
    array(1) { 
    ["b"]=> 
    array(1) { 
     ["c"]=> 
     array(0) { 
     } 
    } 
    } 
} 
1

到@aibs解決方案類似。

<?php 

function splitIntoSubArray($array) { 
    return $array ? array(array_shift($array) => splitIntoSubArray($array)) : array(); 
} 

$a = array('a', 'b', 'c'); 

print_r(splitIntoSubArray($a)); 

輸出:目前做

Array 
(
    [a] => Array 
     (
      [b] => Array 
       (
        [c] => Array 
         (
         ) 

       ) 

     ) 

)