Maison > développement back-end > tutoriel php > Comment convertir efficacement une liste de tableaux en une structure arborescente hiérarchique ?

Comment convertir efficacement une liste de tableaux en une structure arborescente hiérarchique ?

Mary-Kate Olsen
Libérer: 2024-12-04 14:21:10
original
163 Les gens l'ont consulté

How to Efficiently Convert an Array List into a Hierarchical Tree Structure?

Création d'arbres de tableaux à partir de listes de tableaux

Dans les situations où vous avez une liste d'éléments avec des relations hiérarchiques, la convertir en un arbre la structure peut être cruciale. Cette transformation est particulièrement utile lorsqu'il s'agit de données complexes qui nécessitent une organisation et une récupération efficaces.

Considérons la liste suivante à titre d'exemple :

[
  {id: 100, parentId: 0, name: 'a'},
  {id: 101, parentId: 100, name: 'a'},
  {id: 102, parentId: 101, name: 'a'},
  {id: 103, parentId: 101, name: 'a'},
]
Copier après la connexion

Le but est de réorganiser cette liste en une liste hiérarchique structure arborescente, où chaque élément a une référence à son parent et à ses enfants (le cas échéant).

Une approche efficace pour réaliser cette conversion est démontrée par le code suivant extrait :

<?php

$arr = [
    ['id' => 100, 'parentId' => 0, 'name' => 'a'],
    ['id' => 101, 'parentId' => 100, 'name' => 'a'],
    ['id' => 102, 'parentId' => 101, 'name' => 'a'],
    ['id' => 103, 'parentId' => 101, 'name' => 'a'],
];

$new = [];
foreach ($arr as $a) {
    $new[$a['parentId']][] = $a;
}
$tree = createTree($new, [$arr[0]]);
print_r($tree);

function createTree(&$list, $parent) {
    $tree = [];
    foreach ($parent as $k => $l) {
        if (isset($list[$l['id']])) {
            $l['children'] = createTree($list, $list[$l['id']]);
        }
        $tree[] = $l;
    }
    return $tree;
}
Copier après la connexion

Ce code traite efficacement la liste d'entrée en regroupant les éléments en fonction de leur parentId. Il construit ensuite de manière récursive la structure arborescente, en remplissant chaque élément avec ses enfants. L'arborescence résultante fournit une représentation hiérarchique de la liste d'origine, ce qui facilite la navigation et la récupération des données en fonction des relations parent-enfant.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal