Lors de l'écriture de fonctions récursives, vous pouvez envisager de mettre en cache et de définir certaines variables statiques pour stocker les résultats de l'exécution précédente. L'efficacité de l'exécution de plusieurs programmes est très utile. Les étapes générales sont les suivantes : récupérez d'abord les données de la base de données, placez-le dans un tableau, puis convertissez les données en un tableau en forme d'arbre, et convertissez enfin ce tableau en forme d'arbre en code HTML. Regardons un exemple ci-dessous
Parce qu'un de mes sites techniques contient principalement des articles et que certains articles sont dans une série, je souhaite donc classer ces articles et mettre la même catégorie sous une seule.
La base de données est bien conçue, utilisez simplement id, Fatherid pour classer, Fatherid représente la catégorie parent est l'identifiant de l'article, id est l'identifiant unique de l'article, le niveau n'est pas limité, il peut être deux niveaux, il peut s'agir d'une couche à trois niveaux. Un identifiant de père de 0 indique un article de premier niveau.
Code PHP, principalement récursif
function category_tree($fatherid){ //require_once("mysql_class/config.inc.php"); //require_once("mysql_class/Database.class.php"); $db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE); $db->connect(); $sql = "SELECT id,title,url FROM ".TABLE_TASK." WHERE fatherid=$fatherid and ispublic=1 order by id asc"; $articles = $db->query($sql); $db->close(); while ($record = $db->fetch_array($articles)){ $i = 0; if ($i == 0){ if($fatherid==0){ echo '<ul class="article-list-no-style border-bottom">'; }else{ echo '<ul class="article-list-no-style">'; } } if($fatherid==0){ echo '<li><span class="glyphicon glyphicon-log-in" aria-hidden="true" id="han'.$record['id'].'"> </span> <a href="'.$record['url'].'" target="_blank">' . $record['title'].'</a>'; }else{ echo '<li><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"> </span> <a href="'.$record['url'].'" target="_blank">' . $record['title'].'</a>'; } category_tree($record['id']); echo '</li>'; $i++; if ($i > 0){ echo '</ul>'; } } }
Appel :
category_tree(0) //先提取最顶层文章
Résumé : Ce qui précède est tout le contenu de cet article, je j'espère que cela pourra être utile à l'étude de chacun.
Recommandations associées :
Définition du mot-clé static en PHP, liaison tardive et différence avec le mot-clé self
Comment utiliser foreach() en PHP
Une brève description des méthodes magiques fournies en PHP
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!