Maison développement back-end tutoriel php Comment convertir un tableau unidimensionnel en une structure d'arbre imbriquée à trois couches en utilisant PHP?

Comment convertir un tableau unidimensionnel en une structure d'arbre imbriquée à trois couches en utilisant PHP?

Apr 01, 2025 am 09:00 AM
red

Comment convertir un tableau unidimensionnel en une structure d'arbre imbriquée à trois couches en utilisant PHP?

Cet article examine comment convertir efficacement les tableaux PHP 1D en structures d'arbres imbriquées à trois couches. Compte tenu d'un tableau contenant le nom du projet, le modèle et les informations de localisation, l'objectif est de le convertir en structure d'arbre, avec le nom du projet en tant que nœud de premier niveau, le modèle en tant que nœud de deuxième niveau et l'emplacement en tant que nœud de troisième niveau.

Tableau initial:

 $ arr = [
    ['name' => "Project 1", 'modèle' => "Gold", 'Location' => 'Suzhou'],
    ['name' => "Project 1", 'modèle' => "Silver", 'Location' => 'Shanghai'],
    ['name' => "Project 2", 'modèle' => "cuivre", 'emplacement' => 'beijing'],
    ['name' => "Project 2", 'Model' => "Copper", 'Location' => 'Shenzhen'],
]]
Copier après la connexion

Structure de l'arbre cible:

 $ cible = [
    [
        'name' => "Article 1",
        'enfant' => [
            ['modèle' => "Gold", 'Child' => [['emplacement' => 'suzhou']]],
            ['modèle' => "Silver", 'Child' => [['emplacement' => 'shanghai']]],
        ]]
    ],
    [
        'name' => "Project 2",
        'enfant' => [
            ['modèle' => "cuivre", 'enfant' => [['emplacement' => 'beijing'], ['emplacement' => 'shenzhen']]],
        ]]
    ],
]]
Copier après la connexion

La solution précédente était trop compliquée. Nous pouvons utiliser une méthode plus simple et plus facile à comprendre pour construire une structure en forme d'arbre à l'aide de boucles et de jugements conditionnels:

 $ result = [];
foreach ($ arr comme $ item) {
    $ name = $ item ['name'];
    $ modèle = $ item ['modèle'];
    $ localisation = $ item ['emplacement'];

    // trouver ou créer le nom de projet node $ nameIndex = array_search ($ name, array_column ($ result, 'name'));
    if ($ nameIndex === false) {
        $ result [] = ['name' => $ name, 'child' => []];
        $ nameIndex = count ($ result) - 1;
    }

    // Rechercher ou créer le modèle de modèle $ ModelIndex = array_search ($ modèle, array_column ($ result [$ nameIndex] ['Child'], 'modèle'));
    if ($ ModelIndex === false) {
        $ Result [$ nameIndex] ['Child'] [] = ['modèle' => $ modèle, 'Child' => []];
        $ ModelIndex = Count ($ Result [$ nameIndex] ['Child']) - 1;
    }

    // Ajouter le nœud de localisation $ result [$ nameIndex] ['enfant'] [$ ModelIndex] ['enfant'] [] = ['Location' => $ emplacement];
}

print_r ($ result); // Sortie de la structure de l'arbre converti
Copier après la connexion

Ce code initialise d'abord un tableau de tableau vide $result . Il itère ensuite sur chaque élément du tableau d'origine $arr . Pour chaque projet, il recherche la présence du nom du projet et du nœud de modèle correspondant. S'il n'existe pas, un nouveau nœud est créé. Enfin, il ajoute les informations de localisation sous le nœud de modèle correspondant. Cette méthode est plus claire et plus facile à entretenir.

Cette approche évite array_map et array_reduce , ce qui facilite la compréhension et le débogage. Il fonctionne directement sur des tableaux et est plus efficace. Choisissez la méthode qui convient à votre projet et ajustez le code en fonction des conditions réelles.

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Apr 04, 2025 pm 05:09 PM

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? Apr 04, 2025 pm 05:12 PM

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

Comment implémenter la disposition adaptative de la position de l'axe y dans l'annotation Web? Comment implémenter la disposition adaptative de la position de l'axe y dans l'annotation Web? Apr 04, 2025 pm 11:30 PM

L'algorithme adaptatif de la position de l'axe y pour la fonction d'annotation Web Cet article explorera comment implémenter des fonctions d'annotation similaires aux documents de mots, en particulier comment gérer l'intervalle entre les annotations ...

Comment résoudre le problème de l'arrière-plan de grand-père obstruant les pseudo-éléments lorsque le gradient de texte ajoute des ombres? Comment résoudre le problème de l'arrière-plan de grand-père obstruant les pseudo-éléments lorsque le gradient de texte ajoute des ombres? Apr 05, 2025 pm 05:36 PM

Lors de l'ajout d'ombres aux gradients de texte, la solution au fond du grand-père bloque les pseudo-éléments. Lors de l'ajout d'ombres aux gradients de texte, les pseudo-éléments et le positionnement absolu sont généralement utilisés pour ...

Comment réaliser avec précision l'effet de petite étiquette dans le projet de conception sur le terminal mobile? Comment réaliser avec précision l'effet de petite étiquette dans le projet de conception sur le terminal mobile? Apr 04, 2025 pm 11:36 PM

Comment réaliser l'effet des petites étiquettes dans le projet de conception sur le terminal mobile? Lors de la conception d'applications mobiles, il est courant de savoir comment restaurer avec précision l'effet de petite étiquette dans le projet de conception ...

La différence dans les résultats de sortie de Console.log: Pourquoi les mêmes variables ont-elles des méthodes d'impression différentes mais des résultats différents? La différence dans les résultats de sortie de Console.log: Pourquoi les mêmes variables ont-elles des méthodes d'impression différentes mais des résultats différents? Apr 04, 2025 am 11:48 AM

Une discussion approfondie des différences de console. La sortie de la log dans cet article analysera les raisons pour lesquelles les résultats de sortie de la fonction Console.log dans un morceau de code sont différents. Les extraits de code impliquent une résolution des paramètres URL ...

C Programmer & # S Guide de comportement non défini C Programmer & # S Guide de comportement non défini Apr 03, 2025 pm 07:57 PM

Exploration des comportements non définis dans la programmation C: un guide détaillé Cet article introduit un livre électronique sur les comportements indéfinis en programmation C, un total de 12 chapitres couvrant certains des aspects les plus difficiles et les plus connus de la programmation C. Ce livre n'est pas un manuel d'introduction pour le langage C, mais s'adresse aux lecteurs familiers avec la programmation du langage C, et explore en profondeur diverses situations et conséquences potentielles de comportements non définis. Auteur Dmitrysviridkin, rédacteur en chef Andrey Karpov. Après six mois de préparation minutieuse, ce livre électronique a finalement rencontré des lecteurs. Les versions imprimées seront également lancées à l'avenir. Ce livre devait initialement inclure 11 chapitres, mais pendant le processus de création, le contenu a été enrichi en continu et finalement étendu à 12 chapitres - c'est lui-même un cas de baisse de tableau classique, et il peut être considéré comme un programmeur C C

See all articles