Maison  >  Article  >  développement back-end  >  PHP génère une arborescence d'articles basée sur la récursivité

PHP génère une arborescence d'articles basée sur la récursivité

墨辰丷
墨辰丷original
2018-06-11 14:34:441404parcourir

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 &#39;<ul class="article-list-no-style border-bottom">&#39;;
      }else{
        echo &#39;<ul class="article-list-no-style">&#39;;
      }
      
    }
    if($fatherid==0){
      echo &#39;<li><span class="glyphicon glyphicon-log-in" 
      aria-hidden="true" id="han&#39;.$record[&#39;id&#39;].&#39;">
      </span>  <a href="&#39;.$record[&#39;url&#39;].&#39;" target="_blank">&#39; 
      . $record[&#39;title&#39;].&#39;</a>&#39;;
    }else{
      echo &#39;<li><span class="glyphicon glyphicon-chevron-right" aria-hidden="true">
      </span> <a href="&#39;.$record[&#39;url&#39;].&#39;" target="_blank">&#39; 
      . $record[&#39;title&#39;].&#39;</a>&#39;;
    }
    
    category_tree($record[&#39;id&#39;]);
    echo &#39;</li>&#39;;
    $i++;
    if ($i > 0){
      echo &#39;</ul>&#39;;
    }
  }
}

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!

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