标签:需要 名称 自己 复杂 循环 foreach tree log 递归
当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究。
到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,让我们怎么学习嘛,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了。
比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了。
代码:category.class.php
这里的$cate是查询上面表获取的一个二维数组:这里就不写了
下面是效果:
到此,我们就实现了最简单的php无限极分类了,这个在工作中用的很多的。
----------------------------------------------
好像不需要array_merge
大家知道分类多了,递归效率也就低了,所以,有了下面的算法:预排序遍历树算法进行无限分类
相关文章推荐:
超优雅!两行代码搞定 php 无限级分类 获取顶级分类ID
有这样一个表,id
是分类的ID,name
是分类名称,pid
是上级分类的ID。
现在有个分类ID,程序要找到它上级的上级的上级……分类的ID,简单说就是找出顶级分类的ID。比如“新鲜水果”的ID是13,对应父类ID是5,而5的父ID是1,1没有父类,也就是顶级分类了。
以前年轻气盛不懂事,总想着用递归来查找,然后再将结果缓存来解决性能问题。
后来又试过将整个表缓存起来,再递归查找。
再后来……似乎比较少有机会遇到无限级分类……
最近有个同事问我怎么“优雅”的解决这个问题。于是我灵机一动,就有了如下解决方案:
<?php $sql = "select id, pid from tablename "; // 查询后 将结果处理成 如下数组格式 $arr = [ // id => pid 1 => 0, // 省略... 5 => 1, // 省略... 13 => 5 ]; // 建议将这数组缓存起来 $id = 13; while($arr[$id]) { $id = $arr[$id]; } echo $id; // 1
不得不说:真是太优雅了!连我都佩服我自己了,同事更是五体投地,痛哭流涕。因为他写了几十行循环再判断再递归的代码,被我用两行代码替换了……
PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂
标签:需要 名称 自己 复杂 循环 foreach tree log 递归
原文地址:http://www.cnblogs.com/jiangxiaobo/p/6229570.html