Cet article partage principalement avec vous des exemples de traitement récursif Thinkphp qui génère des catégories par niveau. J'espère que cela pourra vous aider.
1. Généralement, les catégories sont stockées dans la base de données et la relation entre les catégories est identifiée par parent_id. En développement, il est parfois nécessaire d'afficher les catégories selon le niveau de classification, comme indiqué ci-dessous :
Utilisez la méthode récursive, le code source est le suivant :
/** * * @param array $list 为一个二维数组,存放着所有的分类,包含的字段为(分类id,分类名,parent_id) * @param number $parent_id * @param number $level * @return Ambigous <multitype:, number> */ function find_level($list,$parent_id=0,$level=1){ foreach($list as $l){ if($l['parent_id']==$parent_id){ $l['level']=$level; $arr[]=$l; $child=$this->find_level($list,$l['cat_id'],$level+1); if(is_array($child)){ $arr=array_merge($arr,$child); } } } return $arr; }
Lors de son utilisation, utilisez simplement find_level($list) ou $this->find_level($list) selon la situation réelle
$list=M('category')->field('cat_id,cat_name,parent_id')->select(); $list=$this->find_level($list); $this->list=$list; $this->display();
Code d'affichage du fichier frontend
<table> <foreach name="list" item="vo"> <tr> <td> <for start="1" end="$vo['level']"> </for> {$vo.cat_name}<br/> </td> </tr> </foreach> </table>
La syntaxe utilisée ici est Thinkphp
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!