如何在PHP中遍历邻接列表?

时间:2011-05-19 16:15:05

标签: php arrays recursion traversal

让我们看一下表category,作为我想要理解的概念的一个例子:

ID    NAME       PARENT_ID
1     catA       0
2     catB       0
3     childA     1
4     childC     3

获得这样的组织的最佳做法是什么:

array(

   'byId' => array(

        1 => array(
            'name' => 'catA',
            'hasChild' => array(
                'byId' => array(
                    3 => array(
                        'name' => 'childA',
                        'hasChild' => array(
                            'byId' => array(
                                4 => array(
                                    'name' => 'childB',
                                    'hasChild' => false
                                )
                            )
                        )
                    )
                )
            )
        ),

   )

);

1 个答案:

答案 0 :(得分:0)

这里只是一些数据结构。现在你有一个哈希表,孩子们可以永远继续下去,这可能会成为PHP对数组已经有点低效的哈希表结构的噩梦。我建议的是简单地将每个项目作为自己的数组元素并指定父项。这样可以更容易,因为您知道您只能拥有一个父项或根本没有父项,但每个父项可以有多个子项。

array (
    0 => array(
        'name' => 'Blah',
        'parent' => false,
    )

    1 => array(
        'name' => 'Blah\'s first child',
        'parent' => 0,
    )

    2 => array(
        'name' => 'Blah\'s second child',
        'parent' => 0,
    )

    3 => array(
        'name' => 'Foo',
        'parent' => false,
    )

    4 => array(
        'name' => 'Bar',
        'parent' => 3,
    )
)