【问题标题】:Creating an array with infinite depth创建一个无限深度的数组
【发布时间】:2012-04-02 19:29:37
【问题描述】:

我有一个包含很多(3000+)值的以下 mysql 表:

[id] [parent_id] [string]

并希望将其打印为嵌套树(例如嵌套uls)。请注意,它的深度是无限的。

我尝试了SO answer 中的嵌套函数,但它真的很慢。我的其他方法失败了,不服从无限深度。

【问题讨论】:

  • 你的问题是......?
  • 3000 条记录是一个非常易于管理的数量,并且绝对具有 有限 深度。递归函数在这里可能很慢,但它是遍历“树”的好方法。只有 3000 条记录,它不会真的很慢。您的实施中可能存在问题。 -- 您希望如何构造与嵌套元素相同的记录? parent_id 是节点吗?不确定你想要什么... - 这里的具体问题或问题是什么?有点模糊。
  • 您想打印出无限深度的嵌套树吗? :) 你的意思是“无限期”吗?
  • 我的问题是:我应该怎么做?我想做的是创建一个嵌套数组,以后可以处理。
  • @Karoly:不。无限是相当理论上的。大概有 7 个“层”

标签: php mysql infinite


【解决方案1】:

如果您想要无限深度,请不要使用邻接列表模型。您将继续在此处发布问题,以解决您将遇到的许多问题。

改用嵌套集合模型。

【讨论】:

  • "如果您想要无限深度,请不要使用邻接表模型。" - 不对。这里的问题是他需要抓取整棵树并且可能不想在mysql之外重建树。
  • 嵌套集合模型解决了这个问题。使用它打印整个树要容易得多:您可以轻松地以打印友好的顺序获取所有节点。尝试使用邻接列表模型来做到这一点。
  • 这就是我所说的……以间接的方式。
  • 我以为您不同意解决方案,但现在我知道您实际上不同意问题所在(不是吗?)。抱歉我误会了。正如问题的最后一句话所示,我认为这仍然是问题的一部分。但它也使编写显示函数(可能使用递归)更容易。
  • 是的,我就是这么想的。解决方案很好:)
猜你喜欢
  • 2013-04-15
  • 2018-02-13
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 2011-04-05
  • 2015-01-24
相关资源
最近更新 更多