php中的无限极分类

May 14, 2015


无限极分类


无限级分类
     public function unlimitedForlevel($cate,$html="--",$pid=0,$level){// 接收参数,并进行处理
        $arr=array();
        foreach($cate as $v){
            if($v['pid']==$pid){ //
                $v['level']=$level+1;
                $v['html']=str_repeat($html,$level);//将字符串复制$level次数
                $arr[]=$v;
                $arr=array_merge($arr,self::unlimitedForlevel($cate,$html,$v['id'],$level+1));
            }
        }
        return $arr;
    }
     public function unlimitedForLayer ($cate,$name='child',$pid=0){ //无限极分类的多维数组方法
        $arr=array();
        foreach($cate as $v){
            if($v['pid']==$pid){
                $v[$name]=self::unlimitedForLayer($cate,$v['id']);
                $arr[]=$v;
            }
        }
        return $arr;
    }
}

传递一个子分类id返回所有的父级分类

    public function getParents($cate,$id){
        $arr=array();
        foreach($cate as $v){
            if($v['id']==$id){
                $arr[]=$v;
                $arr=array_merge($arr,self::getParents($cate,$v['pid']));
            }
        }
        return $arr;
    }

传递一个父级分类id返回所有的子分类id
     public function getChilds($cate,$pid){
        $arr=array();
        foreach($cate as $v){
            if($v['pid']==$pid){
                $arr[]=$v;
                $arr=array_merge($arr,self::getChilds($cate,$v['id']));
            }
        }
        return $arr;
    }