Maison >développement back-end >tutoriel php >Comment utiliser la fonction de classification illimitée dans le développement PHP

Comment utiliser la fonction de classification illimitée dans le développement PHP

王林
王林original
2023-06-25 14:36:151296parcourir

Avec le développement rapide d'Internet, les fonctions et les exigences des sites Web deviennent de plus en plus complexes. Parmi eux, la fonction de classification illimitée est un moyen très important d'organiser et de gérer les informations. Il peut aider les développeurs à organiser efficacement les informations afin que les utilisateurs puissent trouver plus rapidement ce dont ils ont besoin. Aujourd'hui, nous allons présenter comment utiliser la fonction de classification illimitée dans le développement PHP.

Qu'est-ce que la fonction de classification illimitée ?

Dans la classification traditionnelle, chaque catégorie ne peut avoir qu'une seule catégorie parent et plusieurs catégories enfants. Toutefois, dans certains scénarios complexes, cette méthode de classification sera limitée. Par exemple, un produit peut appartenir à plusieurs marques, plusieurs groupes de classification, plusieurs régions, etc. À l'heure actuelle, la fonction de classification illimitée peut fournir de meilleures solutions.

La fonction de classification illimitée, comme son nom l'indique, n'a aucune restriction de niveau. Les classifications peuvent être librement combinées et une donnée peut appartenir à plusieurs catégories. Cette fonction convient aux scénarios nécessitant une organisation flexible des données, tels que la classification des blogs, la classification des produits, la classification des actualités, etc.

Comment implémenter une fonction de classification illimitée

Ci-dessous, nous présenterons étape par étape comment implémenter une fonction de classification illimitée dans le développement PHP.

Étape 1 : Créer une table de base de données

Lors de la création d'une table de base de données, nous devons prendre en compte trois champs clés, à savoir l'ID de catégorie, le nom de la catégorie et l'ID parent de la catégorie. L'ID de catégorie est l'identifiant unique de chaque catégorie, le nom de la catégorie est utilisé pour afficher les informations de catégorie et l'ID parent de catégorie indique l'ID de catégorie parent de la catégorie.

CREATE TABLE categories (categories (
id int(11) NOT NULL,
name varchar(100) NOT NULL,
parent_id int(11) NOT NULL,
PRIMARY KEY (id)
);

第二步:插入分类数据

在数据库表中插入分类数据时,可以使用嵌套集合模型的方式,即用左右值描述每个分类层级组织关系,示例如下:

INSERT INTO categories (id, name, parent_id, lft, rgt id int(11) NON NULL,
name varchar(100) NON NULL,
parent_id int(11) NOT NULL,
PRIMARY KEY (id)
);

Étape 2 : Insérer des données catégorielles

Lors de l'insertion de données catégorielles dans une table de base de données, vous pouvez utiliser l'intégration La façon de configurer un modèle de collection consiste à utiliser les valeurs gauche et droite pour décrire la relation organisationnelle de chaque niveau de catégorie. L'exemple est le suivant :

INSERT INTO categories (id, name, parent_id, lft, rgt) VALEURS

(1, 'Électrique appareils', 0, 1, 10),

(2, 'TV', 1, 2, 3),

(3, 'Appareils de téléphonie mobile', 1, 4, 9),
(4, 'Smartphone', 3, 5, 6),

(5, 'Feature phone'', 3, 7, 8);

Parmi eux, lft et rgt décrivent la relation hiérarchique entre les catégories, et les sous-catégories et les catégories parent peuvent être interrogées de manière récursive.

Étape 3 : Interroger des données classifiées

Lors de l'interrogation de données classifiées, nous pouvons utiliser une requête récursive. L'exemple est le suivant :

fonction getCategories($parentId = 0, $level = 0)

{

$sql = 'SELECT * FROM `categories` WHERE `parent_id` = ? ORDER BY `lft` ASC';
$stmt = $pdo->prepare($sql);
$stmt->execute([$parentId]);
$categories = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (!empty($categories)) {
    $level++;
    $categories = array_map(function ($category) use ($level) {
        $category['level'] = $level;
        $category['children'] = getCategories($category['id'], $level);
        return $category;
    }, $categories);
}

return $categories;

}

Dans cette fonction, nous interrogeons d'abord toutes les sous-catégories de la catégorie parent actuelle et les trions par lvalue. Ensuite, en s'appelant de manière récursive, la sous-catégorie de la sous-catégorie est interrogée et enregistrée dans le champ enfants. Enfin, un tableau catégoriel est renvoyé.

Étape 4 : Afficher les données catégorielles

Lors de l'affichage des données catégorielles, nous pouvons utiliser le parcours récursif. L'exemple est le suivant :

fonction showCategories($categories)🎜{🎜
if (!empty($categories)) {
    echo '<ul>';
    foreach ($categories as $category) {
        echo '<li>' . $category['name'] . '</li>';
        if (!empty($category['children'])) {
            showCategories($category['children']);
        }
    }
    echo '</ul>';
}
🎜}🎜🎜Dans cette fonction, nous déterminons d'abord. si le tableau de catégories est vide. Sinon, parcourez le tableau et affichez le nom de la catégorie. Ensuite, si la catégorie comporte des sous-catégories, appelez-la de manière récursive pour afficher les sous-catégories. 🎜🎜Conclusion🎜🎜Grâce aux quatre étapes ci-dessus, nous pouvons facilement implémenter des fonctions de classification illimitées et pouvons également utiliser des méthodes récursives pour afficher des données classifiées. Cette fonction est très courante dans le développement réel, notamment dans le commerce électronique, les actualités, les blogs et autres scénarios. J'espère que cet article pourra inspirer les développeurs PHP et les aider à mieux faire face aux besoins réels de développement. 🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn