首頁 >後端開發 >php教程 >TP5框架下如何用遞迴實現無限分級(程式碼範例)

TP5框架下如何用遞迴實現無限分級(程式碼範例)

不言
不言原創
2018-08-20 16:16:092521瀏覽

這篇文章帶給大家的內容是關於TP5框架下如何用遞歸實現無限分級(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

我用的是tp5框架,由於專案多處無限分級,所以我在extend裡面直接建立一個catetree套件再建立一個類別Catetee.php,就可以在控制器裡面直接引用就可以了

<?php
namespace catetree;
class Catetree {
    
    public function catetree($cateRes){
        return $this->sort($cateRes);
    }
    public function sort($cateRes,$pid=0,$level=0){
        static $arr=array();
        foreach ($cateRes as $k => $v) {
            if($v[&#39;pid&#39;]==$pid){
                $v[&#39;level&#39;]=$level;
                $arr[]=$v;
                $this->sort($cateRes,$v[&#39;id&#39;],$level+1);
            }
        }
        return $arr;
    }
    //获取子栏目id
   public function childrenids($cateid,$obj){
        $data=$obj->field(&#39;id,pid&#39;)->select();
        return $this->_childrenids($data,$cateid,TRUE);
   }
   private function _childrenids($data,$cateid,$clear=FALSE){
        static $arr=array();
        if($clear){
          $arr=array();
        }
        foreach ($data as $k => $v) {
            if($v[&#39;pid&#39;]==$cateid){
                $arr[]=$v[&#39;id&#39;];
                $this->_childrenids($data,$v[&#39;id&#39;]);
            }
        }
        return $arr;
   }
   //处理栏目排序
   public function cateSort($data,$obj){
    foreach ($data as $k => $v) {
        $obj->update([&#39;id&#39;=>$k,&#39;sort&#39;=>$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);
    
   }
}

相關推薦:

PHP實作無層級遞歸分類(ThinkPHP框架),無階thinkphp

#ThinkPHP實作遞歸無層級分類程式碼少,thinkphp遞迴

#

以上是TP5框架下如何用遞迴實現無限分級(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn