2015-05-13 120 views
-1

我已經試過了幾個小時做平板陣列是將讓我產生相同頁面的平面陣列的功能,但以他們的父母標題他們 前的孩子我所能到目前爲止做的就是1級的家長,我需要這背後的邏輯,我可以做的代碼,主要的一點是有一個數組中選擇菜單 即取:遞歸函數生成分層陣列

Parent 
parent/Sub 1 
Parent/Sub 1/Sub 2 
Parent 2 
parent 2/Sub 1 
Parent 2/Sub 1/Sub 2 

我的陣列看起來像這樣:

Array (
    [0] => Array (
     [object]=>menuObject 
     [title]=>title 
     [parent_id]=>parent_id 

     [children]=>array(

      [0] => Array (
      [object]=>menuObject 
      [title]=>title 
      [parent_id]=>parent_id 
      [children]=>'' 
     ) 

    ) 
    ) 
); 

數組我需要的樣子:

Array(
     [14]=>'parent/sub/sub 1' 
     //[ID]=>[Title] 
    ) 
+1

這很有趣,有人試圖同樣的事情昨天: http://stackoverflow.com/questions/30190772/how-to-create-an- HTML的下拉-從 - - 遞歸陣列功能於PHP/30190997#30190997 這將更有可能滿足您的需要 – Cr3aHal0

+0

感謝傢伙,我想通了 – ImadBakir

回答

0

好,相當長的時間後,我想出了一個辦法有2個功能, 第一扁平化陣列,另做它找出路雖然我不得不查詢數據庫,使其

public function parseSelectArray($tree) 
    { 
     $return=array(); 
     foreach ($tree as $key => $value) { 
      //The other function call to create the path 
      $return[$key]=Controller_Admin_Pages::createPath($key); 
     } 
     return empty($return) ? null : $return; 
    } 
    public function createPath($id) { 
     //Query the page, though I could get the value from the array. 
     $page=Model_Page::find($id); 

     if($page->idparent == 0) { 
      $name = $page->title; 
      return $name; 
     } else { 
      $name = $page->title; 
      return Controller_Admin_Pages::createPath($page->idparent). "/".$name; 
     } 
    }