递归查询---当前分类的下的所有子分类
来源:互联网 发布:java代码的移植性 编辑:程序博客网 时间:2024/05/16 17:39
既然是查找当前分类下的所有子分类,那么就是根据当前分类的id,去找所有pid等于当前的分类,然后通过递归不断的去找下一级
上代码:
//执行函数 public function getchildren(){ //取出所有分类 $data=M('ushop_class')->select(); $res= $this->_getchildren($data,78); dump($res); } //递归数据 public function _getchildren($data,$catid){ static $res=array(); foreach($data as $k=>$v){ //判断该条数据的pid 是否等于当前 id if($v['pid']==$catid){ //将该条数据保存在静态变量中 $res[]=$v['name']; //继续将查询出的数据中id代入递归中继续操作 $this->_getchildren($data,$v['id']); } } return $res; }
以上代码虽然能实现功能但是还是有个小bug 的
因为在static $res=array();是静态变量,所以在执行完一次后,结果将会保存在 $res中。当你在通过ajax不刷新的方式去查询的话,得到的结果就会包含上一次的数据所以做出以下改进
//执行函数 public function getchildren(){ //取出所有分类 $data=M('ushop_class')->select(); //每次执行前将$extis设为true 函数就会清空$res $res= $this->_getchildren($data,78,true); dump($res); } //递归数据 //$extis = false public function _getchildren($data,$catid,$extis=false){ if($extis){ $res=[]; } static $res=array(); foreach($data as $k=>$v){ //判断该条数据的pid 是否等于当前 id if($v['pid']==$catid){ //将该条数据保存在静态变量中 $res[]=$v['name']; //继续将查询出的数据中id代入递归中继续操作 $this->_getchildren($data,$v['id']); } } return $res; }
这下应该就没问题了,还请大神指点*_*
0 0
- 递归查询---当前分类的下的所有子分类
- java递归查询分类及分类下所有子分类
- 在分类页面下得到当前目录下的所有子目录,并输出! ---当前分类下的所有子分类!
- wordpress 得到某分类下的所有子分类
- 子查询的分类
- 根据父级获所有子分类(CTE递归)的存储过程
- ecshop 商品分类页 取得当前分类下的子分类方法
- 无限级分类查询一个栏目下的所有子栏目
- PHP递归函数 获取属于这个分类的所有子分类
- php 无限递归查询子id 子类 根据父分类 父ID 查询所有子分类 子ID
- wordpress模板制作:获取当前分类的子分类
- SQL查询所有新闻分类且关联出每个分类下的最新的一条新闻
- Magento里显示指定分类的所有子分类
- 查询当前用户下所有的子用户
- [Magento SQL] 更加分类名称,查询该分类下所有的sku
- [Magento SQL] 查询分类名称,和该分类下关联的所有sku
- Oracle无限分级下查询指定分类下所有子分类Sql
- Oracle无限分级下查询指定分类下所有子分类
- C语言学习,根据标识符来区分字段
- 导航栏隐藏的正确方式
- HDU2874【LCA(模板)】
- MRC实战体验
- 机器学习之贝叶斯网络
- 递归查询---当前分类的下的所有子分类
- s12 第一本书第六章
- C语言解决窗口闪退的两个方法
- Java基础-数组
- c++和c#求摸操作符号%的注意问题,是负数的情况
- 优化MySchool第二章课后
- 第七章上机与课后
- redis 安装
- 学习笔记-phthon(1)