2011-12-14 29 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

// Iは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

関連する問題