Position actuelle: Accueil> Derniers articles> Tutoriel complet sur la mise en œuvre de la structure de classification infinie en forme d'arbre

Tutoriel complet sur la mise en œuvre de la structure de classification infinie en forme d'arbre

gitbox 2025-07-28

introduction

Dans le développement d'applications Web, les besoins d'affichage de classification à plusieurs niveaux sont très courants, tels que la classification des produits, la classification des articles, le menu d'autorisation, etc. La classification de niveau infini, en tant que structure qui prend en charge la nidification à n'importe quel niveau, est une solution idéale pour répondre à ces besoins. Cet article introduira en détail comment utiliser PHP pour construire une structure d'arborescence de classification de niveau infini efficace.

Conception de la structure des données

Pour atteindre une classification de niveau infini, une structure de table de données raisonnable est d'abord nécessaire. Habituellement, nous utilisons une table d'auto-association simple pour stocker les données classifiées.

 
CREATE TABLE categories (
  id INT PRIMARY KEY AUTO_INCREMENT,
  parent_id INT NOT NULL,
  name VARCHAR(50) NOT NULL
);

Dans le tableau, ID est l'identifiant unique de chaque catégorie, Parent_id représente la classe parent, le parent_id de la classe de niveau supérieur est généralement défini sur 0 et le nom est le nom de la catégorie.

Requête de données classifiée

Avant d'afficher la structure de l'arborescence, vous devez d'abord extraire les données de classification complètes de la base de données et générer des relations imbriquées récursivement:

 
function getCategories($parent_id = 0) {
  $categories = [];
  $query = "SELECT id, name FROM categories WHERE parent_id = :parent_id";
  $stmt = $pdo->prepare($query);
  $stmt->execute(['parent_id' => $parent_id]);

  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $categories[$row['id']] = [
      'id' => $row['id'],
      'name' => $row['name'],
      'children' => getCategories($row['id'])
    ];
  }
  return $categories;
}

Le code ci-dessus crée une arborescence de classification complète récursivement, et chaque classification contient des informations sur toutes ses sous-catégories.

Exemple d'appel:

 
$categories = getCategories();

Affichage de la structure des arbres

Pour afficher clairement les données classifiées sur une page Web, nous pouvons utiliser des éléments de liste non ordonnés de HTML et le rendre récursivement:

 
function renderCategories($categories) {
  echo '<ul>';
  foreach ($categories as $category) {
    echo '<li>' . $category['name'] . '</li>';
    if (!empty($category['children'])) {
      echo '<ul>';
      renderCategories($category['children']);
      echo '</ul>';
    }
  }
  echo '</ul>';
}

renderCategories($categories);

Cette fonction dépasse la couche de classification imbriquée par couche via une méthode récursive et l'affiche au format HTML avec une structure hiérarchique claire.

Conclusion

Le cœur de l'utilisation de PHP pour implémenter une structure d'arbre de classification de niveau infini réside dans le traitement récursif et l'affichage raisonnable des données. Cette méthode est très pratique, que ce soit dans les systèmes de gestion de contenu ou dans la classification des produits. J'espère que l'explication de cet article peut vous aider à mieux comprendre et appliquer les méthodes de mise en œuvre de la classification infinie.