获取阵列中给定父ID的所有子项

时间:2011-12-14 17:47:17

标签: php arrays recursion iterator parent-child

我有一个这样的数组:

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 1返回2,3。

感谢。

1 个答案:

答案 0 :(得分: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>';

    ?>