Maison > développement back-end > tutoriel php > Comment générer une arborescence HTML hiérarchique à partir des relations parent-enfant ?

Comment générer une arborescence HTML hiérarchique à partir des relations parent-enfant ?

Linda Hamilton
Libérer: 2024-12-29 19:42:15
original
430 Les gens l'ont consulté

How to Generate a Hierarchical HTML Tree from Parent-Child Relationships?

Génération d'arbre hiérarchique à partir des relations parent-enfant

Défi :

Convertir une collection de les paires nom-nom-parent dans une structure arborescente hiérarchique. Le but est de générer des listes HTML non ordonnées imbriquées (

    ) représentant les relations enfant-parent.

    Approche récursive :

    La solution emploie deux fonctions récursives. La première fonction, parseTree(), parcourt la structure arborescente et construit un arbre hiérarchique. Il recherche les enfants directs d'une racine spécifiée et les ajoute à l'arbre résultant, analysant de manière récursive les enfants de chaque enfant.

    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

    La deuxième fonction, printTree(), parcourt l'arbre généré par parseTree() et imprime le HTML correspondant non ordonné list.

    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 convertir les paires nom-nom-parent données en une structure arborescente et imprimer la liste HTML non ordonnée, vous appelleriez ces fonctions comme suit:

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

    Fonction combinée:

    Pour une efficacité améliorée, vous pouvez fusionner les deux fonctions en une seule fonction :

    function parseAndPrintTree($root, $tree) {
        $return = array();
        if(!is_null($tree) && count($tree) > 0) {
            echo '<ul>';
            foreach($tree as $child => $parent) {
                if($parent == $root) {                    
                    unset($tree[$child]);
                    echo '<li>'.$child;
                    parseAndPrintTree($child, $tree);
                    echo '</li>';
                }
            }
            echo '</ul>';
        }
    }
    Copier après la connexion

    Cette fonction combinée simplifie le processus d'analyse et d'impression et réduit le nombre d'itérations requises.

    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