sort($menu); //返回排序成功后的数据 } //对栏目进行排序 public function sort($menu,$pid=0,$level=0){ static $arr=array(); //静态数组 foreach ($menu as $k => $v) { //遍历数据 if($v['pid']==$pid){ //第一次 pid=0 的顶级数组全部循环出来 $v['level']=$level; $arr[]=$v; $this->sort($menu,$v['id'],$level+1); //递归找下级子栏目 } } return $arr; } //获取子栏目id public function childrenids($cateid,$obj){ $data=$obj->field('id,pid')->select(); return $this->_childrenids($data,$cateid); } private function _childrenids($data,$cateid){ static $arr=array(); foreach ($data as $k => $v) { if($v['pid']==$cateid){ $arr[]=$v['id']; $this->_childrenids($data,$v['id']); } } return $arr; } //处理栏目排序 public function cateSort($data,$obj){ foreach ($data as $k => $v) { $obj->update(['id'=>$k,'sort'=>$v]); } } //处理批量删除 public function pdel($cateids){ foreach ($cateids as $k => $v) { $childrenidsarr[]=$this->childrenids($v); $childrenidsarr[]=(int)$v; } $_childrenidsarr=array(); foreach ($childrenidsarr as $k => $v) { if(is_array($v)){ foreach ($v as $k1 => $v1) { $_childrenidsarr[]=$v1; } }else{ $_childrenidsarr[]=$v; } } $_childrenidsarr=array_unique($_childrenidsarr); $this::destroy($_childrenidsarr); } }