


Summary of methods to implement unlimited classification in PHP+Mysql_PHP tutorial
A summary of methods to achieve unlimited classification in PHP+Mysql
This article mainly introduces two methods to achieve unlimited classification in PHP+Mysql, and compares and analyzes the two methods. Friends who need it can refer to the advantages and disadvantages of the method
Infinite classification is an old topic. Let’s take a look at how to implement it with PHP combined with Mysql.
The first method
This method is very common and traditional. Let’s look at the table structure first
Table:category
id int primary key, auto-increment
name varchar category name
pid int parent class id, default 0
The pid of the top category is 0 by default. When we want to take out the sub-category tree of a certain category, the basic idea is recursion. Of course, due to efficiency issues, it is not recommended to query the database for every recursion. The usual approach is to first retrieve all categories and save them in a PHP array. , and then process it, and finally cache the results to improve the efficiency of the next request.
First build an original array, which can be pulled directly from the database:
The code is as follows:
$categories = array(
array('id'=>1,'name'=>'Computer','pid'=>0),
array('id'=>2,'name'=>'mobile phone','pid'=>0),
array('id'=>3,'name'=>'Notebook','pid'=>1),
array('id'=>4,'name'=>'Desktop','pid'=>1),
array('id'=>5,'name'=>'Smartphone','pid'=>2),
array('id'=>6,'name'=>'Function machine','pid'=>2),
array('id'=>7,'name'=>'Ultrabook','pid'=>3),
array('id'=>8,'name'=>'Game Note','pid'=>3),
);
The goal is to convert it into the following structure
Computer
Notebook
Ultrabook
Game notebook
Desktop
Mobile phone
Smartphone
Function phone
If represented by an array, you can add a children key to store its subcategories:
The code is as follows:
array(
//1 corresponds to the id, which is convenient for direct reading
1 => array(
'id'=>1,
'name'=>'Computer',
'pid'=>0,
children=>array(
&array(
'id'=>3,
'name'=>'Notebook',
'pid'=>1,
'children'=>array(
//Omit here
)
),
&array(
'id'=>4,
'name'=>'Desktop',
'pid'=>1,
'children'=>array(
//Omit here
)
),
)
),
//Other categories are omitted
)
Processing process:
The code is as follows:
$tree = array();
//The first step is to use the classification id as the array key and create the children unit
foreach($categories as $category){
$tree[$category['id']] = $category;
$tree[$category['id']]['children'] = array();
}
//The second part uses references to add each category to the children array of the parent class, so that a tree structure can be formed in one traversal.
foreach ($tree as $k=>$item) {
if ($item['pid'] != 0) {
$tree[$item['pid']]['children'][] = &$tree[$k];
}
}
print_r($tree);
The printing results are as follows:
The code is as follows:
Array
(
[1] => Array
(
[id] => 1
[name] => Computer
[pid] => 0
[children] => Array
(
[0] => Array
(
[id] => 3
[name] => Notebook
[pid] => 1
[children] => Array
(
[0] => Array
(
[id] => 7
[name] => Ultrabook
[pid] => 3
[children] => Array
(
)
)
[1] => Array
(
[id] => 8
[name] => Game Notebook
[pid] => 3
[children] => Array
(
)
)
)
)
[1] => Array
(
[id] => 4
[name] => Desktop
[pid] => 1
[children] => Array
(
)
)
)
)
[2] => Array
(
[id] => 2
[name] => Mobile phone
[pid] => 0
[children] => Array
(
[0] => Array
(
[id] => 5
[name] => Smartphone
[pid] => 2
[children] => Array
(
)
)
[1] => Array
(
[id] => 6
[name] => Function phone
[pid] => 2
[children] => Array
(
)
)
)
)
[3] => Array
(
[id] => 3
[name] => Notebook
[pid] => 1
[children] => Array
(
[0] => Array
(
[id] => 7
[name] => Ultrabook
[pid] => 3
[children] => Array
(
)
)
[1] => Array
(
[id] => 8
[name] => Game Notebook
[pid] => 3
[children] => Array
(
)
)
)
)
[4] => Array
(
[id] => 4
[name] => Desktop
[pid] => 1
[children] => Array
(
)
)
[5] => Array
(
[id] => 5
[name] => Smartphone
[pid] => 2
[children] => Array
(
)
)
[6] => Array
(
[id] => 6
[name] => Function phone
[pid] => 2
[children] => Array
(
)
)
[7] => Array
(
[id] => 7
[name] => Ultrabook
[pid] => 3
[children] => Array
(
)
)
[8] => Array
(
[id] => 8
[name] => Game Notebook
[pid] => 3
[children] => Array
(
)
)
)
Advantages: The relationship is clear and it is easy to modify the relationship between superiors and subordinates.
Disadvantages: Using PHP for processing, if the number of categories is huge, the efficiency will also be reduced.
The second method
This method is to add a path field to the table field:
Table:category
id int primary key, auto-increment
name varchar category name
pid int parent class id, default 0
path varchar path
Sample data:
id name pid path
1 computer 0 0
2 mobile 0 0
3 notebook 1 0-1
4 Ultrabook 3 0-1-3
5 Game Book 3 0-1-3
The path field records the path from the root category to the upper-level parent category, represented by id+'-'.
In this way, assuming we want to query all descendant categories under the computer, we only need one sql statement:
select id,name,path from category where path like (select concat(path,'-',id,'%') as path from category where id=1);
Result:
+----+-----------+-------+
| id | name | path |
+----+-----------+-------+
| 3 | Notebook | 0-1 |
| 4 | Ultrabook | 0-1-3 |
| 5 | Game Book | 0-1-3 |
+----+-----------+-------+
This method has also been adopted by many people. I summarized it as follows:
Advantages: easy query, high efficiency, path field can be indexed.
Disadvantages: Updating node relationships is troublesome and requires updating the path fields of all descendants.
The above is the entire content of this article, two methods, which one do you prefer? Hope you all like it.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Tomato Novel is a very popular novel reading software. We often have new novels and comics to read in Tomato Novel. Every novel and comic is very interesting. Many friends also want to write novels. Earn pocket money and edit the content of the novel you want to write into text. So how do we write the novel in it? My friends don’t know, so let’s go to this site together. Let’s take some time to look at an introduction to how to write a novel. Share the Tomato novel tutorial on how to write a novel. 1. First open the Tomato free novel app on your mobile phone and click on Personal Center - Writer Center. 2. Jump to the Tomato Writer Assistant page - click on Create a new book at the end of the novel.

Unfortunately, people often delete certain contacts accidentally for some reasons. WeChat is a widely used social software. To help users solve this problem, this article will introduce how to retrieve deleted contacts in a simple way. 1. Understand the WeChat contact deletion mechanism. This provides us with the possibility to retrieve deleted contacts. The contact deletion mechanism in WeChat removes them from the address book, but does not delete them completely. 2. Use WeChat’s built-in “Contact Book Recovery” function. WeChat provides “Contact Book Recovery” to save time and energy. Users can quickly retrieve previously deleted contacts through this function. 3. Enter the WeChat settings page and click the lower right corner, open the WeChat application "Me" and click the settings icon in the upper right corner to enter the settings page.

1. How can you make money by publishing articles on Toutiao today? How to earn more income by publishing articles on Toutiao today! 1. Activate basic rights and interests: original articles can earn profits by advertising, and videos must be original in horizontal screen mode to earn profits. 2. Activate the rights of 100 fans: if the number of fans reaches 100 fans or above, you can get profits from micro headlines, original Q&A creation and Q&A. 3. Insist on original works: Original works include articles, micro headlines, questions, etc., and are required to be more than 300 words. Please note that if illegally plagiarized works are published as original works, credit points will be deducted, and even any profits will be deducted. 4. Verticality: When writing articles in professional fields, you cannot write articles across fields at will. You will not get appropriate recommendations, you will not be able to achieve the professionalism and refinement of your work, and it will be difficult to attract fans and readers. 5. Activity: high activity,

How to implement dual WeChat login on Huawei mobile phones? With the rise of social media, WeChat has become one of the indispensable communication tools in people's daily lives. However, many people may encounter a problem: logging into multiple WeChat accounts at the same time on the same mobile phone. For Huawei mobile phone users, it is not difficult to achieve dual WeChat login. This article will introduce how to achieve dual WeChat login on Huawei mobile phones. First of all, the EMUI system that comes with Huawei mobile phones provides a very convenient function - dual application opening. Through the application dual opening function, users can simultaneously

In today's society, mobile phones have become an indispensable part of our lives. As an important tool for our daily communication, work, and life, WeChat is often used. However, it may be necessary to separate two WeChat accounts when handling different transactions, which requires the mobile phone to support logging in to two WeChat accounts at the same time. As a well-known domestic brand, Huawei mobile phones are used by many people. So what is the method to open two WeChat accounts on Huawei mobile phones? Let’s reveal the secret of this method. First of all, you need to use two WeChat accounts at the same time on your Huawei mobile phone. The easiest way is to

Mobile games have become an integral part of people's lives with the development of technology. It has attracted the attention of many players with its cute dragon egg image and interesting hatching process, and one of the games that has attracted much attention is the mobile version of Dragon Egg. To help players better cultivate and grow their own dragons in the game, this article will introduce to you how to hatch dragon eggs in the mobile version. 1. Choose the appropriate type of dragon egg. Players need to carefully choose the type of dragon egg that they like and suit themselves, based on the different types of dragon egg attributes and abilities provided in the game. 2. Upgrade the level of the incubation machine. Players need to improve the level of the incubation machine by completing tasks and collecting props. The level of the incubation machine determines the hatching speed and hatching success rate. 3. Collect the resources required for hatching. Players need to be in the game

Setting font size has become an important personalization requirement as mobile phones become an important tool in people's daily lives. In order to meet the needs of different users, this article will introduce how to improve the mobile phone use experience and adjust the font size of the mobile phone through simple operations. Why do you need to adjust the font size of your mobile phone - Adjusting the font size can make the text clearer and easier to read - Suitable for the reading needs of users of different ages - Convenient for users with poor vision to use the font size setting function of the mobile phone system - How to enter the system settings interface - In Find and enter the "Display" option in the settings interface - find the "Font Size" option and adjust it. Adjust the font size with a third-party application - download and install an application that supports font size adjustment - open the application and enter the relevant settings interface - according to the individual

The difference between Go language methods and functions lies in their association with structures: methods are associated with structures and are used to operate structure data or methods; functions are independent of types and are used to perform general operations.
