2011-12-14 3 views
0

주어진 부모 ID에 대한 모든 아이를 가져 오기 :나는이 같은 배열을 배열

array(
    array(
     'id' => 1, 
     'parent_id' => null 
    ), 
    array(
     'id' => 2, 
     'parent_id' => 1 
    ), 
    array(
     'id' => 3, 
     'parent_id' => 2 
    ), 
    array(
     'id' => 4, 
     'parent_id' => null 
    ), 
    array(
     'id' => 5, 
     'parent_id' => 4 
    ) 
); 

어떻게 모든 그랜드 어린이를 포함한 주어진 PARENT_ID의 모든 어린이를 찾을 수 있습니까? 예를 들어 함수는 parent_id 1에 대해 2,3을 반환합니다.

감사합니다.

+1

당신의 결과에 맞게, 또는 내가 그것을 얻을 너무 두꺼운 생각하는 배열을 수정? 내가 아는 한 parent_id 1을 지정하면 2 (동일한 배열의 id 키 값) 또는 1 (부모 배열 내의 자식 배열 위치)을 반환 할 수 있습니다. 어떻게 3이이 배열과 일치하는지 알지 못합니다. 내가 놓친 게 있니? – DaveL

+0

당신은 당신의 관점에서 완전히 맞습니다. 그러나 나는 원하는 것은 배열 인덱스가 아닌 'id'값입니다. 그리고 당신은 다시 맞습니다, 만약 내가 parent_id 1의 아이를 갖기를 원한다면 나는 id 2를 얻을 것입니다. 그러나 그 후에는 점점 더 힘들어집니다. id 1의 아이들을 찾은 후에, 나는 멈추고 이러한 결과의 아이들을 찾기를 계속하고 싶지 않습니다. (나쁜 영어에 대해 유감스럽게 생각한다) – cnkt

답변

3

는 //이 질문에 잘못 입력이 1 => 2,3

<?php 

    $test = array(
    array(
      'id' => 1, 
      'parent_id' => null 
    ), 
    array(
      'id' => 2, 
      'parent_id' => 1 
    ), 
    array(
      'id' => 3, 
      'parent_id' => 1 
    ), 
    array(
      'id' => 4, 
      'parent_id' => null 
    ), 
    array(
      'id' => 5, 
      'parent_id' => 4 
    ) 
    ); 

    // 1_2+3 
    $parent_childs = ARRAY(); 
    foreach ($test AS $index => $child) { 
     if (!isset($child['parent_id'])) { continue; } 
     $parent_childs[$child['parent_id']][] = $child['id']; 
    } 


    echo '<pre>';var_dump($parent_childs); echo '</pre>'; 

    ?> 
+0

그것이 효과가 있었다. 감사. – cnkt