我的数据库中有一个表,其中包含类别数据:
id title parent 1 category 1 0 2 category 2 2 3 category 3 3 4 category 4 0
每个父级都可以有父行 ID。
例如,类别 3 是类别 2 的子级,类别 2 是类别 1 的子级。
category 1 category 2 category 3 category 4
1 - 有更好的方法来操纵这项技术吗? 2 - 我的实现是获取一个 SQL 查询中的所有行,然后使用递归函数构建一个多维数组,然后使用多级 foreach 循环遍历它以构建菜单或其他内容。我需要一种更好的方法来使用 PHP SPL。
我想创建一个完整的菜单或一个项目路径,例如:
category1 -> catgory 2 -> etc.
并创建一个网格来保存每行中的类别级别。
最佳答案
如果您的数据是严格分层的(而且看起来确实如此),我建议您使用修改的预序树遍历方法来存储数据。
有一个superb article at Sitepoint讨论了这个确切的问题。您似乎正在使用邻接列表模型,该模型已在第一页中讨论,但 MPTT 对于此类数据的读取密集型存储要高效得多。
查看page 2查看示例。这确实是一个非常出色的建筑。
关于PHP SPL 操作递归菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837649/