2013-11-27 59 views
-1

我有一個數組這樣圖案(類別和子類別):array('parent_id1'=>array('id1','id2','id3'))重組有ID和PARENT_ID遞歸就像一棵樹的陣列

這是我的精確陣列:

 $categories = Array 
(
    [0] => Array 
     (
      [0] => 12 
      [1] => 13 
      [2] => 14 
      [3] => 15 
      [4] => 16 
      [5] => 17 
      [6] => 18 
      [7] => 19 
      [8] => 20 
     ) 

    [12] => Array 
     (
      [0] => 21 
      [1] => 22 
      [2] => 23 
      [3] => 24 
      [4] => 25 
      [5] => 26 
      [6] => 27 
     ) 

    [14] => Array 
     (
      [0] => 36 
     ) 

    [26] => Array 
     (
      [0] => 28 
      [1] => 29 
      [2] => 30 
      [3] => 31 
      [4] => 32 
     ) 

    [28] => Array 
     (
      [0] => 33 
      [1] => 34 
     ) 

    [33] => Array 
     (
      [0] => 35 
     ) 

    [36] => Array 
     (
      [0] => 37 
     ) 

) 
  • 類別與parent_id = 0是所有類別的父親。

我想這個重組陣列像這樣的一棵樹:

Array 
    (
    [12] => Array 
     (
      [21] => Array 
       (
       ) 

      [22] => Array 
       (
       ) 

      [23] => Array 
       (
       ) 

      [24] => Array 
       (
       ) 

      [25] => Array 
       (
       ) 

      [26] => Array 
       (
        [28] => Array 
         (
          [33] => Array 
           (
            [35] => Array 
             (
             ) 

           ) 

          [34] => Array 
           (
           ) 

         ) 

        [29] => Array 
         (
         ) 

        [30] => Array 
         (
         ) 

        [31] => Array 
         (
         ) 

        [32] => Array 
         (
         ) 

       ) 

      [27] => Array 
       (
       ) 

     ) 

    [13] => Array 
     (
     ) 

    [14] => Array 
     (
      [36] => Array 
       (
        [37] => Array 
         (
         ) 

       ) 

     ) 

    [15] => Array 
     (
     ) 

    [16] => Array 
     (
     ) 

    [17] => Array 
     (
     ) 

    [18] => Array 
     (
     ) 

    [19] => Array 
     (
     ) 

    [20] => Array 
     (
     ) 

) 

我怎麼能遞歸地做到這一點?

+0

不,你不想「排序」它,你想*重組它*。 – deceze

+0

[從數據庫結果生成多維數組的遞歸函數]的可能重複(http://stackoverflow.com/questions/8587341/recursive-function-to-generate-multidimensional-array-from-database-result) – deceze

回答

1
<?php 
function mysort($arr, $key = 0){ 
    $ids = $arr[$key]; 
    $ret = array(); 
    sort($ids); 
    foreach($ids as $id){ 
     $ret[$id] = empty($arr[$id]) ? array() : mysort($arr, $id); 
    } 
    return $ret; 
} 

print_r(mysort($categories));