Thinkphp5实现无限极分类
商品分类页显示 主要调用common里的函数:在控制器调用getlevel()的方法,在递归方法里用到的函数有:str_repeat() array_merge()在控制器controller先赋值
public function index(){
$data = db("数据表")->select();
return $this->fetch("",['data'=>$data]);
}
// res 要整合的数据
// pid 代表父级id
// level 代表替换的次数
// html 代表替换的标识公共函数:
公共函数库递归写法
function getlevel($data,$pid=0,$level=0,$html='----->'){
$arr = [];
foreach($data as $k => $v){
if($v['parent_id'] == $pid){
$v['level'] = $level;
$v['level'] = str_repeat($html, $level);
$arr[] =$v;
$arr = array_merge($arr,getlevel($data,$v['cat_id'],$level+1));
}
}
return $arr;
}
分类遍历:
getlevel方法一共有四个参数: 先定义一个空数组1. 把整个的数据遍历一下,2.判断父级id 3.把level字段替换标识 4.放在空数组里面 $arr; 5.合并array_merge()6.return返回
添加分类
public function addcategory(){
$res = db("category")->select();
$res = getlevel($res);
return $this->fetch('',['res'=>$res]);
}
public function add_cate(){
$data = input("post.");
if(empty($data)){
$this->error("添加失败");
}else{
$res = db("category")->insert($data);
$this->success("添加成功");
}
return $res;
}
view视图遍历: