2013-11-22 2 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

이 기능은 모든 아이디의를 반환 끝점뿐만 아니라 –

+0

맞아요, 저는 그것이 당신이 원한 것이라고 생각했습니다 - 배열이 아닌 모든 끝점들. 아아, Jesper는 이미 동일한 기능을 게시했지만 가장 깊은 ID 만 반환합니다. – Benubird

+0

예 benubird ... jesper 함수가 잘 작동하고 있습니다 ... – kalyan

관련 문제