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