12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- namespace catetree;
- class Catetree{
- //无限级分类
-
- public function getMenu($menu){
- return $this->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);
-
- }
- }
|