递归查询---当前分类的下的所有子分类

来源:互联网 发布: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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 阴唇手术半月了疤痕增生怎么办 宝宝小阴唇黏连怎么办 6个月宝宝阴唇粘连怎么办? 高一孩子不爱上学怎么办 3岁宝宝外阴发红怎么办 40爸妈离婚我该怎么办 小儿吃糖卡住了怎么办 额头撞墙上肿了怎么办 宝宝额头撞肿了怎么办 小孩额头撞肿了怎么办 宝宝撞到额头肿了怎么办 小孩子上一年级语文很差了怎么办? 楼下说小孩太吵怎么办 托班的小孩太吵怎么办 宝宝两岁只会简单的词怎么办 我儿子的视力低怎么办 小孩子课文看书都不会读怎么办 宝宝衣服买小了怎么办 拉拉裤腰围小了怎么办 一周九个月宝宝发烧怎么办 8个月的婴儿37.7怎么办 宝宝发烧37度3怎么办 2岁宝宝发烧37度怎么办 3个月新生儿发烧怎么办 生完孩子肚子松弛怎么办 6个月婴儿高烧怎么办 7个月婴儿高烧怎么办 11个月婴儿高烧怎么办 4个月婴儿高烧怎么办 新生宝宝混合喂养消化不良怎么办 四个月的宝宝不追听不追视怎么办 宝宝母乳换奶粉拉肚子怎么办 奶牛产奶脂肪低怎么办 新生儿混合喂养不喝水怎么办 小孩子咳嗽怎么办有什么偏方 混合喂养宝宝不喝奶粉怎么办 混合喂养宝宝不吃奶粉怎么办 混合喂养宝宝不吃奶瓶怎么办 混合喂养的宝宝不吃奶粉怎么办 三个月的宝宝突然不吃奶粉怎么办 四个月宝宝拉绿屎推拿怎么办