
要实现无线嵌套效果,可以使用如下代码:
1、取出数据,这里是thinkphp的model取数据方法,取数据的方法无所谓,只要能从数据库取出来就行了
public function cateTree(){
$cates = $this->order('sort asc')->select();
return $this->getMenu($cates);
}
2、递归处理刚才从数据库获取的数据,将子数据放到父级的children里,pid为父级id,默认顶级的id为0
public function getMenu($data,$pid=0,$deep=0)
{
$tree=array();
foreach ($data as $row) {
if($row['pid']==$pid){
$row['deep']=$deep;
$row['children']=$this->getMenu($data,$row['id'],$deep+1);
$tree[]=$row;
}
}
return $tree;
}
最终json序列化后,在前端格式化的结构为:
