//先查询所有的数组 public function getAll(){ $data = $this->select(); //调用递归查询相关的小数组 return $this->digui($data,$pid=0); } //定义一个递归的方法 public function digui($data,$pid=0){ //定义一个儿子的数组,形成孙子结构 $child = []; foreach ($data as $k => $v){ if($v['pid']==$pid){ $child[] = $v; } } //判断一下$child是不是空的 if(empty($child)){ return null; } //如果不是空的,继续循环他的孙子 foreach ($child as $kk => $vv){ $res = $this->digui($data,$vv['nid']); $child[$kk]['child'] = $res; } return $child; }