2013-11-22 195 views
0

我有如下給出的數組結構...在這裏,我想通過動態獲取所有最終孩子的id值,因爲此數組可能有很多孩子。我如何通過動態獲得每個最終孩子的id值?
我希望值從下面陣列結構這樣從多維數組獲取值

6 
7 
8 
9 
17 

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [children] => Array 
       (
        [0] => Array 
         (
          [id] => 4 
          [children] => Array 
           (
            [0] => Array 
             (
              [id] => 6 
             ) 

           ) 

         ) 

        [1] => Array 
         (
          [id] => 5 
          [children] => Array 
           (
            [0] => Array 
             (
              [id] => 7 
             ) 

           ) 

         ) 

       ) 

     ) 

    [1] => Array 
     (
      [id] => 2 
      [children] => Array 
       (
        [0] => Array 
         (
          [id] => 8 
         ) 

        [1] => Array 
         (
          [id] => 9 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [id] => 3 
      [children] => Array 
       (
        [0] => Array 
         (
          [id] => 10 
         ) 

        [1] => Array 
         (
          [id] => 16 
          [children] => Array 
           (
            [0] => Array 
             (
              [id] => 17 
             ) 

           ) 

         ) 

       ) 

     ) 

) 

回答

1

這將返回終點遞歸

function getIds($data){ 
    $out = array(); 
    if(is_array($data)){ 
      foreach($data as $elm){ 
        if($elm['children']){ 
          $out = array_merge($out,getIds($elm['children'])); 
        }else{ 
          $out[] = $elm['id']; 
        } 
      } 
    } 
    return $out; 
} 
+0

非常感謝jesper ....我得到的輸出正是我想要的... – kalyan

1

易與遞歸做:

function get_final($arr) { 
    $out = array(); 
    if(is_array($arr)) { 
     foreach($arr as $a) { 
      $out = array_merge($out, get_final($a)); 
     } 
     return $out; 
    } 
    else return array($arr); 
} 
+0

此功能將所有的ID不僅僅是端點 –

+0

對,我認爲這就是你想要的 - 所有非數組的終點。嗯,Jesper已經發布了相同的功能,但只返回最深的ID。 – Benubird

+0

是benubird ... jesper功能運行良好... – kalyan