从子节点创建树

时间:2011-11-22 13:45:12

标签: php recursion tree iterator

我有一个包含这些项目的数组:

array(
    array(
        'id' => 1,
        'name' => 'parent 1',
        'parent_id' => null
    ),
    array(
        'id' => 2,
        'name' => 'child of parent 1',
        'parent_id' => 1
    ),
    array(
        'id' => 3,
        'name' => 'grand child of parent 1',
        'parent_id' => 2
    ),
    array(
        'id' => 4,
        'name' => 'parent 2',
        'parent_id' => null
    ),
    array(
        'id' => 5,
        'name' => 'child of parent 2',
        'parent_id' => 4
    ),
);

我的问题是:我如何为已知的孩子建造一棵树?例如,如果我知道id为3,我需要获得一系列项目,包括ID 1,2和3。

感谢。

1 个答案:

答案 0 :(得分:0)

也许是这样的:

function build($tab, $id)
{
    $res = array();
    $node = $tab[$id];
    $i = 0;

    do
    {
        $res[$i] = node;
        $node = $tab[$node['parent_id']];
        $i++;
    } while( $node != null);

    return $res;

}