Maison > développement back-end > tutoriel php > Comment convertir les relations parent-enfant en arbres hiérarchiques en PHP ?

Comment convertir les relations parent-enfant en arbres hiérarchiques en PHP ?

Linda Hamilton
Libérer: 2024-12-26 09:57:10
original
522 Les gens l'ont consulté

How to Convert Parent-Child Relationships into Hierarchical Trees in PHP?

Conversion des relations parent-enfant en arbres hiérarchiques

En programmation, il peut être nécessaire de convertir une série de relations parent-enfant en un structure arborescente hiérarchique. Cette tâche peut être accomplie en PHP en utilisant une approche récursive.

Exemple de données :

Considérez l'ensemble suivant de relations parent-enfant :

Child : Parent
H : G
F : G
G : D
E : D
A : E
B : C
C : E
D : NULL
Copier après la connexion

Transformation en Arbre Hiérarchique :

Pour transformer ces données en un arborescence hiérarchique, nous créons deux fonctions PHP :

  • parseTree($tree, $root) : Cette fonction analyse récursivement les paires enfant-parent et construit l'arbre.
  • printTree($tree) : Cette fonction parcourt l'arborescence et l'imprime sous forme de fichier non ordonné list.

Fonction parseTree :

function parseTree($tree, $root = null) {
    $return = array();
    foreach($tree as $child => $parent) {
        if($parent == $root) {
            unset($tree[$child]);
            $return[] = array(
                'name' => $child,
                'children' => parseTree($tree, $child)
            );
        }
    }
    return empty($return) ? null : $return;    
}
Copier après la connexion

Fonction printTree :

function printTree($tree) {
    if(!is_null($tree) && count($tree) > 0) {
        echo '<ul>';
        foreach($tree as $node) {
            echo '<li>' . $node['name'];
            printTree($node['children']);
            echo '</li>';
        }
        echo '</ul>';
    }
}
Copier après la connexion

Utilisation :

Pour utiliser ces fonctions, initialisez d'abord le tableau de couples enfants-parents. Appelez ensuite parseTree avec le tableau et printTree avec l'arbre résultant :

$tree = array(
    'H' => 'G',
    'F' => 'G',
    'G' => 'D',
    'E' => 'D',
    'A' => 'E',
    'B' => 'C',
    'C' => 'E',
    'D' => null
);

$result = parseTree($tree);
printTree($result);
Copier après la connexion

Résultat :

La sortie sera une liste non ordonnée représentant l'arbre hiérarchique :

<ul>
<li>D
<ul>
<li>G
<ul>
<li>H</li>
<li>F</li>
</ul>
</li>
<li>E
<ul>
<li>A</li>
<li>C
<ul>
<li>B</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
Copier après la connexion

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