Maison  >  Article  >  développement back-end  >  Comment mettre un tableau de classification infinie php

Comment mettre un tableau de classification infinie php

王林
王林original
2023-05-07 18:10:07425parcourir

Dans le développement Web, divers systèmes de classification sont largement utilisés et la classification Infinitus est l'une des méthodes de classification courantes. La classification Infinitus fait référence à une méthode de classification qui ne limite pas le nombre de niveaux de classification dans le système de classification, sa structure de tableau nécessite donc un traitement spécial.

Le langage php est souvent utilisé dans le développement Web. Discutons de la méthode de placement du tableau de classification infinie php.

  1. Méthode récursive

La méthode récursive est la méthode la plus couramment utilisée dans le tableau catégoriel PHP Infinitus. Elle s'appuie sur des appels récursifs de fonctions pour construire des données catégorielles.

La méthode récursive s'écrit comme suit :

/**
 * 无限极分类
 * @param array $data         分类数据
 * @param int $pid            父ID
 * @param int $level          层级数
 * @return array              分类数组
 */
function getTree($data, $pid = 0, $level = 0) {
    $tree = [];
    foreach ($data as $val) {
        if ($val['parent_id'] == $pid) {
            $val['level'] = $level;
            $val['children'] = getTree($data, $val['id'], $level + 1);
            $tree[] = $val;
        }
    }
    return $tree;
}

Dans le code ci-dessus, la fonction getTree reçoit trois paramètres, à savoir les données de classification $data, l'ID parent $pid et le nombre de niveaux $level. La fonction crée d'abord un tableau $tree, puis parcourt les données de classification, et si l'ID parent de l'élément de classification actuel est égal à $pid, il est ajouté au tableau $tree. Chaque élément de classification ajoutera un attribut de niveau, indiquant le numéro de niveau actuel. Dans le même temps, la fonction getTree s'appellera de manière récursive, en passant le tableau de sous-catégorie en paramètre, afin que les éléments de sous-catégorie puissent également être traités de la même manière.

  1. Méthode Loop

La méthode Loop est une autre méthode de traitement dans le tableau de classification PHP Infinitus. Elle réalise principalement la construction de données classifiées par imbrication de boucles.

La méthode de boucle s'écrit comme suit :

/**
 * 无限极分类
 * @param array $data         分类数据
 * @return array              分类数组
 */
function getTree($data) {
    $tree = [];
    $node = [];
    foreach ($data as $val) {
        $node[$val['id']] = $val;
    }
    foreach ($node as $key => &$val) {
        if (isset($node[$val['parent_id']])) {
            $node[$val['parent_id']]['children'][] = &$val;
        } else {
            $tree[] = &$val;
        }
    }
    return $tree;
}

Dans le code ci-dessus, la fonction getTree reçoit un paramètre $data, qui représente des données classifiées. La fonction crée d'abord un tableau $tree et un tableau $node et place les données $data dans le tableau $node. Ensuite, la boucle foreach traverse le tableau $node. Si l'ID parent de l'élément de catégorie actuel se trouve dans le tableau $node, l'élément de catégorie actuel est ajouté au sous-tableau enfants de l'élément de catégorie parent.

Étant donné que les éléments du tableau $node sont stockés en fonction de l'ID de catégorie, si l'élément de catégorie à traiter n'a pas été parcouru, cela signifie que l'élément de catégorie est une catégorie de niveau supérieur, donc l'élément de catégorie peut être directement ajouté au tableau $tree. La fonction renvoie enfin le tableau $tree, qui est un tableau catégoriel infini.

Conclusion

Ci-dessus sont deux méthodes de traitement des tableaux de classification infinie PHP. La méthode récursive est plus simple et la méthode de boucle est plus flexible. Étant donné que la méthode récursive utilise des appels de fonction récursifs, des problèmes tels qu'un débordement de pile d'appels se produiront lors de la rencontre de quantités de données extrêmement longues ou volumineuses, tandis que la méthode en boucle peut mieux gérer de grandes quantités de données. Lors de l'utilisation, vous pouvez choisir une méthode qui vous convient en fonction de vos 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