ホームページ >バックエンド開発 >PHPチュートリアル >TP5 フレームワークで再帰を使用して無限のグレーディングを実現する方法 (コード例)

TP5 フレームワークで再帰を使用して無限のグレーディングを実現する方法 (コード例)

不言
不言オリジナル
2018-08-20 16:16:092536ブラウズ

この記事の内容は、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 recursive

以上がTP5 フレームワークで再帰を使用して無限のグレーディングを実現する方法 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。