【问题标题】:How do I traverse an adjacency list in PHP?如何在 PHP 中遍历邻接表?
【发布时间】:2011-05-19 16:15:04
【问题描述】:

我们看表category,作为我想理解的概念的例子:

ID NAME PARENT_ID 1 类 0 2 猫 B 0 3个孩子A 1 4 儿童C 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
                                )
                            )
                        )
                    )
                )
            )
        ),

   )

);

【问题讨论】:

标签: php arrays recursion traversal


【解决方案1】:

这里只是一点点数据结构。现在你有一个哈希表,它有可能让孩子永远继续下去,这对于 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,
    )
)

【讨论】:

  • 感谢收看。如果你想要一个菜单​​,比如说
    • Parent
      • ChildA
        • ChildOfChild
    • ,你看,你会怎么做?这是否意味着,这个问题只能通过递归函数来解决?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2021-04-23
  • 2012-01-29
  • 1970-01-01
相关资源
最近更新 更多