


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'], ]]
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']]], ]] ], ]]
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
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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 JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

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

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

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

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

À propos de VueMaterialyar ...

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
