Maison  >  Article  >  développement back-end  >  Classer et afficher les instances par niveau

Classer et afficher les instances par niveau

小云云
小云云original
2018-03-16 13:50:131140parcourir

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 :

  1. /** 
       *  
       * @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[&#39;parent_id&#39;]==$parent_id){  
                  $l[&#39;level&#39;]=$level;  
                  $arr[]=$l;  
                  $child=$this->find_level($list,$l[&#39;cat_id&#39;],$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(&#39;category&#39;)->field(&#39;cat_id,cat_name,parent_id&#39;)->select();  
$list=$this->find_level($list);  
$this->list=$list;  
$this->display();


Code d'affichage du fichier frontend

  1. <table>  
    <foreach name="list" item="vo">  
        <tr>  
            <td>  
                <for start="1" end="$vo[&#39;level&#39;]">  
                          
                </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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn