Maison > développement back-end > tutoriel php > Comment convertir efficacement un tableau d'enregistrements en une structure arborescente imbriquée ?

Comment convertir efficacement un tableau d'enregistrements en une structure arborescente imbriquée ?

Barbara Streisand
Libérer: 2024-11-29 12:55:11
original
658 Les gens l'ont consulté

How to Efficiently Convert an Array of Records into a Nested Tree Structure?

Comment convertir efficacement un tableau d'enregistrements en une structure arborescente

Dans ce scénario, vous disposez d'un tableau d'enregistrements représentant une structure hiérarchique . Chaque enregistrement possède un identifiant, un identifiant parent et un nom. L'objectif est de transformer ce tableau en une structure arborescente imbriquée, où le nœud racine a des nœuds enfants, qui à leur tour peuvent avoir leurs propres nœuds enfants.

Pour y parvenir, une fonction récursive nommée createTree est utilisée. Cette fonction prend deux paramètres : une référence au tableau d'enregistrements et un tableau parent. Il parcourt le tableau parent et pour chaque parent, il vérifie s'il existe des enregistrements enfants dans le tableau d'enregistrements. Si des enregistrements enfants existent, il appelle la fonction createTree de manière récursive pour les traiter et attribue le résultat à la propriété children du parent.

Voici un exemple :

$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 sera afficher la structure arborescente souhaitée. La fonction createTree convertit de manière récursive les enregistrements parents en enfants, créant ainsi une représentation arborescente hiérarchique des données. Notez que la fonction opère sur une référence au tableau d'entrée, permettant aux modifications d'être propagées au tableau d'origine.

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