Home  >  Article  >  Backend Development  >  PHP generates article tree based on recursion

PHP generates article tree based on recursion

墨辰丷
墨辰丷Original
2018-06-11 14:34:441450browse

When writing recursive functions, you can consider caching and defining some static variables to store the results of the previous run. Multi-program running efficiency is very helpful. The general steps are as follows: First, get the data from the database, put it into an array, and then convert the data is a tree-shaped array, and finally converts this tree-shaped array into html code. Let's look at an example below

Because one of my technical sites is mainly articles, and some of the articles are in a series, so I want to classify these articles, and put the same category under one.

The database is well designed. It is nothing more than using id and fatherid to classify. fatherid represents the parent category and is the id of the article. id is the unique id of the article. The level is not limited. It can be two levels or three levels. layer. A fatherid of 0 indicates a top-level article.

php code, mainly recursive

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;;
    }
  }
}

Call:

category_tree(0) //先提取最顶层文章

Summary: The above is the entire content of this article, I hope it can be helpful to everyone Learning helps.

Related recommendations:

The definition of the static keyword in PHP, late binding and the difference from the self keyword

How to use foreach() in PHP

A brief description of the magic methods provided in PHP

The above is the detailed content of PHP generates article tree based on recursion. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn