PHP est un langage de script open source largement utilisé et constitue une partie très importante du développement de sites Web. Dans de nombreux développements de sites Web, une structure de classification illimitée est une exigence très courante. Cet article explique comment utiliser PHP pour effectuer facilement des requêtes illimitées.
1. Qu'est-ce que la classification infinie ?
La classification infinie est une méthode de classification arborescente, très courante dans les sites Web. Par exemple, sur un site Web de classification de produits, si vous devez classer des produits, vous pouvez utiliser une classification illimitée. Nous pouvons organiser les produits à des niveaux illimités selon de grandes catégories, de petites catégories, des sous-catégories, etc.
2. Comment implémenter une classification infinie ?
1. Utiliser la récursivité pour implémenter
En PHP, nous pouvons utiliser la récursivité pour implémenter une requête de classification infinie. La méthode d'implémentation spécifique est la suivante :
<?php function getSubCates($cateList, $parentId = 0, $level = 0) { $subs = array(); // 子分类列表 foreach ($cateList as $cate) { if ($cate['parent_id'] == $parentId) { $cate['level'] = $level; // 设置当前分类的级别 $subs[] = $cate; $subs = array_merge($subs, getSubCates($cateList, $cate['id'], $level + 1)); } } return $subs; }
Dans le code ci-dessus, les sous-catégories d'une catégorie sont interrogées, puis les sous-catégories de chaque sous-catégorie sont interrogées de manière récursive, et toutes les catégories sont renvoyées dans un tableau hiérarchiquement.
2. Utilisez la méthode stack pour réaliser
En plus d'utiliser la méthode récursive, vous pouvez également utiliser la méthode stack pour obtenir une classification infinie. Le code de la méthode stack est le suivant :
<?php function getSubCates($cateList, $rootId = 0) { $stack = array($rootId); $subs = array(); while (!empty($stack)) { $parentId = array_pop($stack); foreach ($cateList as $key => $row) { if ($row['parent_id'] == $parentId) { $subs[] = $row; array_push($stack, $row['id']); unset($cateList[$key]); } } } return $subs; }
La structure de données de la pile est utilisée dans le code ci-dessus, le nœud racine est mis dans la pile, la boucle sort le nœud parent de la pile et trouve ses nœuds enfants, et en même temps, pousse le nœud enfant dans la pile jusqu'à ce que la pile soit nulle.
3. Comment utiliser la classification infinie ?
L'utilisation d'une classification illimitée peut grandement faciliter notre développement. Les catégories peuvent être organisées dans une arborescence soignée, ce qui permet aux utilisateurs de parcourir et de trouver plus facilement des cibles. Voici un exemple couramment utilisé :
<?php $cateList = array( array('id' => 1, 'name' => '电子产品', 'parent_id' => 0), array('id' => 2, 'name' => '手机', 'parent_id' => 1), array('id' => 3, 'name' => '笔记本电脑', 'parent_id' => 1), array('id' => 4, 'name' => '三星', 'parent_id' => 2), array('id' => 5, 'name' => '华为', 'parent_id' => 2), array('id' => 6, 'name' => 'ThinkPad', 'parent_id' => 3), array('id' => 7, 'name' => 'Apple', 'parent_id' => 3), ); $subCates = getSubCates($cateList); foreach ($subCates as $cate) { echo str_repeat(' ', $cate['level']) . $cate['name']; echo '<br/>'; }
Dans le code ci-dessus, nous définissons d'abord une liste de catégories $cateList, puis appelons la méthode getSubCates($cateList) pour obtenir toutes les catégories, et enfin utilisons une boucle pour afficher le nom et le niveau. de chaque catégorie.
4. Résumé
La classification infinie est une méthode de classification importante et très pratique. En PHP, nous pouvons utiliser la récursivité ou la pile pour implémenter facilement des requêtes illimitées. Une classification illimitée peut nous aider à créer rapidement une arborescence pour faciliter les requêtes et la navigation des utilisateurs. J'espère que l'introduction ci-dessus pourra aider les lecteurs à mieux comprendre la méthode d'implémentation des requêtes infinies 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!