Maison > développement back-end > tutoriel php > Comment créer efficacement une structure arborescente à partir d'une liste de tableaux hiérarchiques ?

Comment créer efficacement une structure arborescente à partir d'une liste de tableaux hiérarchiques ?

Mary-Kate Olsen
Libérer: 2024-11-29 11:01:10
original
773 Les gens l'ont consulté

How to Efficiently Build a Tree Structure from a Hierarchical Array List?

Construire une structure arborescente à partir d'une liste de tableaux

Étant donné une liste de tableaux d'éléments avec des relations hiérarchiques, comment pouvons-nous la transformer efficacement en un structure arborescente imbriquée ?

Solution :

Pour y parvenir conversion sans utiliser d'optimisations de base de données complexes, nous pouvons utiliser une fonction récursive :

$arr = array(
  array('id' => 100, 'parentid' => 0, 'name' => 'a'),
  array('id' => 101, 'parentid' => 100, 'name' => 'a'),
  array('id' => 102, 'parentid' => 101, 'name' => 'a'),
  array('id' => 103, 'parentid' => 101, 'name' => 'a'),
);

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

function createTree(&$list, $parent){
    $tree = array();
    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 organise les éléments dans une structure hiérarchique imbriquée, représentant les relations parent-enfant entre eux. La structure arborescente résultante peut être imprimée à l'aide de print_r.

En tirant parti d'une fonction récursive, nous pouvons transformer efficacement une liste de tableaux en une structure arborescente, permettant une navigation et une organisation faciles des données.

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