2014-08-27 36 views
3

我想這些字符串轉換成組合的嵌套數組:爆炸串入嵌套數組

array(
    'item1:item2:itemx', 
    'item1:item2:itemy', 
    'itemz' 
) 

array(
    'item1' => array(
     'item2' => array(
      'itemx' => array(), 
      'itemy' => array(), 
     ) 
    ) 
    'itemz' => array() 
) 

有沒有辦法做到這一點與爆炸/ foreach循環?

+0

喜歡在這個崗位[http://stackoverflow.com/questions/25510551/js-array-string-patch-name-to-arrayobject/25510794] [ 1]? – 2014-08-27 20:11:28

+0

我更喜歡PHP的解決方案,並使用數組而不是對象。 – Joe 2014-08-27 20:20:24

+0

是你的數組中的字符串還是真的命名爲$ string1,2等? – 2014-08-27 20:23:08

回答

9

此問題已被解答無數次...請在發佈新問題前使用搜索。

總之,這裏的一個解決方案:

$strings = array(
       'item1:item2:itemx', 
       'item1:item2:itemy', 
       'itemz' 
       ); 

$nested_array = array(); 

foreach($strings as $item) { 
    $temp = &$nested_array; 

    foreach(explode(':', $item) as $key) { 
     $temp = &$temp[$key]; 
    } 

    $temp = array(); 
} 

var_dump($nested_array); 
+0

我確實在發佈之前進行了搜索。無論如何感謝您的回答。 – Joe 2014-08-27 20:35:48

+0

執行後它很好,謝謝! – Joe 2014-08-27 20:51:39

+3

也有類似的問題,但這完全符合我的需求,謝謝。 – TarranJones 2014-09-17 08:46:59