ThinkPHP商城分类无限分类遍历数据

今天需要给安卓IOS端写商城分类的接口,使用原始的方法也是可以的,但是之前使用过得方法忘记怎么写了,最后想起了这个属于无限分类方面的,也属于递归操作,所以到网上查了查,最后找到了相关的方法,特此记录一下,链接如下:

https://blog.csdn.net/landylxy/article/details/55259665

具体代码如下:

/**
  *方法一
  *
*/  
function sort($category,$parent_id=0,$level=0){
        static $arr=array();
        foreach($category as $k=>$v){
            if($v['parent_id']==$parent_id){
                $v['level']=$level;
                $arr[]=$v;
                unset($category[$k]);//已经排好等级的,从数组中移除,提高性能
                $this->sort($category,$v['id'],$level+1);
            }
        }
        return $arr;
    }


/**
  *方法二
  *
*/
    function sort2($category,$parent_id=0,$level=0){
        $res=array();
        foreach($category as $c){
            if($c['parent_id']==$parent_id){
                $c['level']=$level;
                $arr[]=$c;
                $res=array_merge($arr,$this->sort($category,$c['id'],$level+1));
            }
        }
        return $res;
    }
 
 
/**
  *方法三
  *
*/
    /**
    * 得到分类级数,并将他们的上下级关系,体现在返回数组中
    * @param unknown $category
    * @param number $parent_id
    * @param number $level
    * @return multitype:array
    */
   function category($category,$parent_id=0,$level=0){
        $arr=array();
        foreach($category as $k=>$v){
            if($v['parent_id']==$parent_id){
                $v['level']=$level;
                $v['child']=$this->category($category,$v['id'],$level+1);
                $arr[]=$v;
            }
        }
        return $arr;
    }

我使用的是方法三,但是将此方法整合到function.php中调用的时候报错404,我打开原链接说是Using $this when not in object context,截图如下:

标题

所以就找了个上级的控制器继承此方法,继承代码入下:

/**
     * 得到分类级数,并将他们的上下级关系,体现在返回数组中
     * @param unknown $category
     * @param number $parent_id
     * @param number $level
     * @return multitype:array
     */
    public function category($category,$parent_id=0,$level=0){
        $arr=array();
        foreach($category as $k=>$v){
            if($v['parent_id']==$parent_id){
                $v['level']=$level;
                $v['child']=$this->category($category,$v['id'],$level+1);
                $arr[]=$v;
            }
        }
        return $arr;
    }

需要注意的是继承控制器方法需要加上public,否则不能使用,最后查询商城商品分类成功!!!

猜你喜欢

转载自blog.csdn.net/qq_35816459/article/details/85053392