首页 > 建站教程 > PHP教程 >  php多级菜单递归嵌套循环输出正文

php多级菜单递归嵌套循环输出

php实现多级菜单嵌套循环输出,需要用到递归。假设数据库中有如下数据:


要实现无线嵌套效果,可以使用如下代码:

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序列化后,在前端格式化的结构为: