2011-12-14 79 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>'; 

    ?>