PHP关于递归和无限级分类问题求解!

数据库分类表结构如下:

clipboard.png

目的:将查询到的记录重新组合,成树形菜单。

1.成功的方案
控制器代码如下:

clipboard.png

输出结果:

clipboard.png

2.失败的方案
控制器代码如下:

clipboard.png

我使用$cat_tree数组属性来存放查询的结果,输出结果如下:

clipboard.png

后面还有好长,总之是不正确的

求解:为何两种输出的结果不一致?其中有什么我需要了解的?

阅读 2.8k
2 个回答

在失败方案中:从第二次循环开始,每次调用get_cat_tree(),都会返回先前存在静态变量之中的整个树结构数组给childern,这个数组包含有之前生成的所有信息。

也就是你想着他会返回下一级的数据,但实际上是返回的东西包含有它父级的信息在里面的。

虽然每次都是重新调用一次get_cat_tree,但是这个方法返回的一直是同一个静态变量,这个静态变量越来越大,每一层都包含有大于等于上一层的所有信息。

哈哈,这个有点只可意会不可言传的感觉,你多思考一下就一定能看出了哦~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题