本篇文章给大家带来的内容是关于tp5框架下如何用递归实现无限分级(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
我用的是tp5框架,由于项目多处用无限分级,所以我在extend里面直接创建一个catetree包再创建一个类catetee.php,就可以在控制器里面直接引用就可以了
<?phpnamespace 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递归
以上就是tp5框架下如何用递归实现无限分级(代码示例)的详细内容。