Maison > développement back-end > Problème PHP > Comment convertir des données catégorielles infinies sous forme de tableau en php

Comment convertir des données catégorielles infinies sous forme de tableau en php

PHPz
Libérer: 2023-04-18 15:48:24
original
528 Les gens l'ont consulté

Dans le processus de développement avec PHP, une classification illimitée est une exigence courante et importante. Pour plus de commodité d'utilisation et de fonctionnement, nous convertissons généralement des catégories infinies sous forme de tableau. Voici comment convertir des données catégorielles infinies sous forme de tableau.

  1. Définir le format de données catégorielles infinies

Avant de commencer, nous devons établir le format des données catégorielles infinies. De manière générale, un format de base de données de classification infinie se compose des champs suivants :

  • id : identifiant unique, généralement un identifiant à incrémentation automatique.
  • name : Nom de la catégorie.
  • pid : ID de classification de niveau supérieur, 0 s'il s'agit de la classification de premier niveau.
  • niveau : niveau de classement, 1 s'il s'agit du premier niveau de classement.

Par exemple, une simple donnée catégorielle infinie est la suivante :

[
    ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1],
    ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2],
    ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2],
    ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3],
    ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3],
]
Copier après la connexion
  1. Définir la fonction de conversion

Nous pouvons définir une fonction récursive pour convertir des données catégorielles infinies sous forme de tableau. Le code de cette fonction est le suivant :

function categoryToTree($source, $parentId = 0) {   
    $result = [];
   
    foreach ($source as $key => $value) {
        if ($value['pid'] == $parentId) {       
            unset($source[$key]);          
            $children = categoryToTree($source, $value['id']);     
            if (!empty($children)) {
                $value['children'] = $children;
            }
            $result[] = $value;         
        }
    }
   
    return $result;
}
Copier après la connexion

Nous utilisons la récursivité pour réaliser une conversion de classification infinie. Plus précisément, pour chaque donnée de catégorie, nous déterminons d'abord s'il s'agit d'une sous-catégorie de la catégorie actuelle. Si c'est le cas, ajoutons-la au tableau de résultats et traitons ses sous-catégories de manière récursive ; sinon, sautons la catégorie et traitons directement la suivante.

Notez que lors du traitement récursif des sous-catégories, nous supprimerons $source 数组传入。为了保证每个分类只被处理一次,我们需要将已经处理过的分类数据从 $source du tableau.

  1. Effectuer une transformation

En utilisant la fonction de transformation définie ci-dessus, nous pouvons transformer des données catégorielles infinies sous forme de tableau. Par exemple, nous exécutons le code suivant :

$data = [
    ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1],
    ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2],
    ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2],
    ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3],
    ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3],
];

$result = categoryToTree($data);

print_r($result);
Copier après la connexion

Le résultat est le suivant :

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 电子产品
            [pid] => 0
            [level] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [name] => 手机
                            [pid] => 1
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 4
                                            [name] => 智能手机
                                            [pid] => 2
                                            [level] => 3
                                        )
   
                                )
   
                        )
   
                    [1] => Array
                        (
                            [id] => 3
                            [name] => 电脑
                            [pid] => 1
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 5
                                            [name] => 笔记本电脑
                                            [pid] => 3
                                            [level] => 3
                                        )
   
                                )
   
                        )
   
                )
   
        )
   
)
Copier après la connexion

Comme vous pouvez le voir, nous avons converti les données de catégories infinies sous forme de tableau, et chaque catégorie contient ses sous-catégories. De cette façon, nous pouvons facilement utiliser des fonctions de tableau pour traiter un nombre illimité de données catégorielles.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal