2011-12-14 95 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 2011-12-14 17:52:36

+0

你的觀點完全正確,但我想得到的是'id'值而不是數組索引。如果我想要得到parent_id的孩子,我會得到id 2,但你又對了。找到id 1的孩子後,我不想停下來,並繼續找到這些結果的孩子。 (對不起英文不好) – cnkt 2011-12-14 17:57:14

回答

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>'; 

    ?>