PHP SPL 操作递归菜单

标签 php recursion spl

我的数据库中有一个表,其中包含类别数据:

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/

相关文章:

php - 从 Twig 模板调用时在 Controller 中获取参数

php - Laravel Nova 找不到某些模型

php - 多维数组迭代

php - 通过引用递归函数

python - 当我有一个唯一列表时,如何停止该函数?

php - 如果 PHP 库可以注册自己的自动加载器,那么为什么 PSR-0 要求它们位于统一目录中?

PHP SPL ArrayIterator v 简单 foreach

php - 字符串比较的行为不同

php - 为数据对象集合选择数据结构

php - 如何在 Yii2 中仅显示 ActiveField 的标签和错误