この記事の内容は、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['pid']==$pid){ $v['level']=$level; $arr[]=$v; $this->sort($cateRes,$v['id'],$level+1); } } return $arr; } //获取子栏目id public function childrenids($cateid,$obj){ $data=$obj->field('id,pid')->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['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); } }
関連する推奨事項:
PHP はステップレス再帰分類 (ThinkPHP フレームワーク)、ステップレス thinkphp
#ThinkPHP を実装します少ないコードで再帰的な無段階分類を実装します。 thinkphp recursive
以上がTP5 フレームワークで再帰を使用して無限のグレーディングを実現する方法 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。