Maison >développement back-end >tutoriel php >Plusieurs façons d'implémenter efficacement les sous-catégories de requêtes en boucle en PHP
PHP est un langage de script côté serveur couramment utilisé dans le développement Web. Dans le développement PHP, nous rencontrons souvent des situations où nous devons interroger et afficher des catégories et leurs sous-catégories. Cet article explorera plusieurs façons d'implémenter efficacement des sous-catégories de requêtes en boucle et donnera des exemples de code spécifiques.
La récursion est une méthode courante pour parcourir une structure arborescente et convient pour interroger des classifications imbriquées. Voici un exemple de code pour une sous-catégorie de requête récursive simple :
function getSubcategories($category_id) { $subcategories = []; $query = "SELECT id, name FROM categories WHERE parent_id = $category_id"; $result = mysqli_query($connection, $query); while ($row = mysqli_fetch_assoc($result)) { $subcategories[] = $row; $subcategories = array_merge($subcategories, getSubcategories($row['id'])); } return $subcategories; } $category_id = 1; $subcategories = getSubcategories($category_id); print_r($subcategories);
La fonction de fermeture est une fonctionnalité puissante de PHP, qui peut définir des fonctions anonymes à l'intérieur de la fonction et en dehors du transfert de fonction. Voici un exemple de code qui utilise des fonctions de fermeture pour implémenter des sous-catégories de requête :
$categories = []; $fetchCategories = function ($parent_id) use (&$fetchCategories, &$categories) { $query = "SELECT id, name FROM categories WHERE parent_id = $parent_id"; $result = mysqli_query($connection, $query); while ($row = mysqli_fetch_assoc($result)) { $categories[] = $row; $fetchCategories($row['id']); } }; $fetchCategories(1); print_r($categories);
Obtenez toutes les catégories dans une requête de base de données, puis utilisez le code PHP pour créer de manière récursive l'arborescence des sous-catégories. Voici un exemple de code :
$query = "SELECT id, name, parent_id FROM categories"; $result = mysqli_query($connection, $query); $categories = []; while ($row = mysqli_fetch_assoc($result)) { $categories[$row['id']] = $row; } $nestedCategories = []; foreach ($categories as $id => $category) { if ($category['parent_id'] == 0) { $nestedCategories[$id] = $category; } else { $categories[$category['parent_id']]['children'][$id] = $category; } } print_r($nestedCategories);
Grâce aux trois méthodes ci-dessus, nous pouvons implémenter efficacement des sous-catégories de requêtes en boucle. Choisir une méthode adaptée aux besoins du projet et à la structure des données peut améliorer l'efficacité du code et réduire le nombre de requêtes de base de données, optimisant ainsi les performances du programme. J'espère que le contenu ci-dessus vous sera utile.
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!