2013-02-01 55 views
0

多維數組如果你有一個文本文件是這樣的:創建一個從文本行

item1 
item1 > item3 
item1 > item3 > item4 
item1 > item5 
item1 > item5 > item6 > item7 
item2 > item8 
item2 > item8 > item9 

而且我希望有一個數組,看起來像這樣:

array(
     [item1] 
       array(
         [item3] 
           array(
             [item4] 
           ) 
         [item5] 
           array(
             [item6] 
               array(
                 [item7] 
               ) 
           ) 
       ) 
     [item2] 
       array(
         [item8] 
           array(
             [item9] 
           )    
       ) 
    ) 

我應該如何使這個在PHP? 我不知道從哪裏開始。 謝謝。

+0

是一個事務所字符串或不同的字符串? –

+0

什麼應該是每個的價值,你剛纔提到的作爲鍵 –

回答

3

下面是一個非常簡單的方法來處理您的問題。其結果是不完全一樣的(最後一個元素也是一個數組),但是這是更加靈活,我認爲:

$input = array(
    'item1', 
    'item1 > item3', 
    'item1 > item3 > item4', 
    'item1 > item5', 
    'item1 > item5 > item6 > item7', 
    'item2 > item8', 
    'item2 > item8 > item9', 
); 

$data = array(); 
foreach ($input as $line) { 
    $parent =& $data; 
    foreach (array_map('trim', explode('>', $line)) as $el) { 
    if (!isset($parent[$el])) { 
     $parent[$el] = array(); 
    } 

    $parent =& $parent[$el]; 
    } 
} 

print_r($data); 

/* 
Array (
    [item1] => Array (
    [item3] => Array (
     [item4] => Array() 
    ) 
    [item5] => Array (
     [item6] => Array (
     [item7] => Array() 
    ) 
    ) 
) 
    [item2] => Array (
    [item8] => Array (
     [item9] => Array() 
    ) 
) 
) 
*/ 

演示:http://codepad.viper-7.com/IwZFQ3