Le contenu de cet article explique comment utiliser la récursivité pour obtenir une notation infinie (exemple de code) dans le cadre TP5. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
J'utilise le framework tp5. Comme de nombreuses parties du projet utilisent la notation infinie, je crée directement un package catetree dans extend puis crée une classe Catetee.php, qui peut être directement référencée dans le contrôleur. . C'est tout
<?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); } }
Recommandations associées :
PHP implémente une classification récursive en continu (framework ThinkPHP), thinkphp en continu
ThinkPHP implémente une classification récursive continue avec moins de code, thinkphp est récursif
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!