要实现无线嵌套效果,可以使用如下代码:
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序列化后,在前端格式化的结构为: