2013-07-25 41 views
1

我有一個1到1的線性樹,其中languages => types => products => etc;具有多種類型和多種產品的語言等等。陣列樹的線性表示

我已經寫了一個遞歸函數在下面的樣式返回數組:

Array 
(
    [0] => Array 
    (
     [id] => 166 
     [name] => product1 
     [type] => product 
     [depth] => 2 
     [parent] => Array 
      (
       [0] => Array 
        (
         [id] => 165 
         [name] => default 
         [type] => type 
         [depth] => 1 
         [parent] => Array 
          (
           [0] => Array 
            (
             [id] => 1 
             [name] => en 
             [type] => language 
             [depth] => 0 
             [parent] => false 

            ) 

          ) 

        ) 

      ) 

    ) 

) 

我想是會遍歷該樹,並提供一個數組遞歸方法如

[0] => array('id' => 1, 'name' => 'en'), 
[1] => array('id' => 165, 'name' => 'default'), 
[2] => array('id' => 166, 'name' => 'product1') 

0,1,2等於那個元素depth這是我可以建立數據的麪包屑。

謝謝。

回答

1

這裏的關鍵是製作一個打印功能,您可以遞歸調用。我建議這樣的東西

function print_recursive($array, $depth = 0) { 
    //Code to print your stuff 

    //Calls the print function on the parent if it's an array 
    if(is_array($array['parent'])) { 
     print_recursive($array['parent'], $depth+1); 
    } 
} 

默認情況下深度參數爲0,但在$ array ['parent']上調用print_recursive時,我們將其增加1。這樣,每當你在數組中更深入時,它就會增加。

+0

謝謝你,我有一個漫長的一天,遞歸功能突然變得很難精神可視化。在你的幫助下,我完成了這項工作,並將其重新分解到我的其餘項目中。 – carbontwelve