Home  >  Article  >  Backend Development  >  PHP implements infinite classification implementation code (recursive method)_PHP tutorial

PHP implements infinite classification implementation code (recursive method)_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:32:48842browse

At first I thought that such a function seemed difficult. I had made an encyclopedia before, which also involved the classification function, but it was not an infinite classification, but a simple implementation of a fixed three-level classification. I designed it myself at the time. , when I think about it, the implementation method is too crude. In fact, three-level classification is just a special case of infinite-level classification. After thinking about it for a while, I already had some ideas. I checked online and found that there are so many things like this, haha. In fact, the infinite drop-down list function is very simple, it is nothing more than using a recursive algorithm.
First of all, you need to design the database. You need to build a table to store classification information. At least 3 fields are needed. The first is the primary key (ID), the second is the parent classification ID (parentid), and the third is the classification. The name (classname). A possible effect is:
ID PARENTID CLASSNAME
1 0 First-level classification A
2 0 First-level classification B
3 1 Second-level classification A
4 1 Second-level classification B
Main idea: First look at the third and fourth rows. The value of the parent class ID (PARENTID) is 1, which means it belongs to a subclass of the class with id=1. However, the first and second rows are first-level classifications. There is no superior classification, so the value of the parent class ID (PARENTID) is 0, indicating the primary classification, and so on to achieve infinite classification. The final effect is:
├First-level classification A
├─┴Second-level classification A
├─┴Second-level classification B
├First-level classification B
Then there is the program, here As a description language, PHP can be easily changed to other languages ​​because the principle is similar, it is just recursion.

Copy code The code is as follows:

$dbhost = "localhost"; // Database host Name
$dbuser = "root"; // Database user name
$dbpd = "123456"; // Database password
$dbname = "test"; // Database name
mysql_connect($ dbhost,$dbuser,$dbpd); //Connect to host
mysql_select_db($dbname); //Select database
mysql_query("SET NAMES 'utf8'");
display_tree("├",0 );
function display_tree($tag,$classid) {
$result = mysql_query("
SELECT *
FROM ylmf_class
WHERE parentid = '" . $classid . "'
;"
);
while ($row = mysql_fetch_array($result)) {
// Indent the node name
echo $tag.$row['classname'] . "< ;br/>";
//Call this function again to display the child nodes of the child node
display_tree($tag."─┴",$row['id']);
}
}
?>

Such a recursive method is a burden for a large number of sub-columns, and some mature cms systems. They all produce arrays for easy calling and can greatly improve efficiency.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/322720.htmlTechArticleAt first I thought that such a function seemed difficult. I had made an encyclopedia before, which also involved classification. Function, but it is not an infinite classification, but a simple implementation of fixed...
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