两个处理分类的格式化(排序)方法

小天天天天    PHP    999+ 次    2017-05-08 03:22:31


     * @param  array  $arr 要排序的数组
     * @param  integer $pid 从哪里开始,默认是0,顶级开始
     * @param  integer $level 表示层级,默认是0,顶级
     * @return array     排好序的数组
     */
    public function tree($arr,$pid = 0,$level = 0){
        $res = array();
        foreach ($arr as $v) {
            if ($v['parent_id'] == $pid) {
                //说明找到,保存起来
                //首先,需要将level保存到当前分类中
                $v['level'] = $level;
                //$res[] = $v;
                //继续查找,递归,条件发生变化
                $child = $this->tree($arr,$v['cat_id'],$level+1);
                //返回的过程中,处理,将找到的后代分类,放入到$res中,合并的方式
                $res[] = $v;
                $res = array_merge($res,$child);
            }
        }
        //返回结果
        return $res;
    }
    //获取指定分类下的所有后代分类的cat_id, 也包括它自己
    public function getSubIds($cat_id){
        $categorymodel=M("Category");
        $allcats = $categorymodel->where("1")->select();
        $cats = $this->tree($allcats,$cat_id); //二维数组
        $ids = array();
        foreach ($cats as $v) {
            $ids[] = $v['cat_id'];
        }
        //将自己也追加到$ids中
        $ids[] = $cat_id;
        //返回结果
        return $ids;
    }



如果你觉得本篇文章对您有帮助,请打赏作者

上一篇: thinkphp的分页类丑的不要不要的,我贴一个,勉强能看

下一篇: htmlpurifier过滤UEditer提交的数据,避免XSS

最新评论

暂无评论

热门文章

最新评论

网站数据

网站文章数:481

今日UV/PV/IP:22/29/21

昨日UV/PV/IP:22/22 /22

TOP