Heim > Backend-Entwicklung > PHP-Tutorial > Wie erstelle ich einen hierarchischen HTML-Baum aus Eltern-Kind-Beziehungen?

Wie erstelle ich einen hierarchischen HTML-Baum aus Eltern-Kind-Beziehungen?

Linda Hamilton
Freigeben: 2024-12-29 19:42:15
Original
425 Leute haben es durchsucht

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

Hierarchische Baumgenerierung aus Eltern-Kind-Beziehungen

Herausforderung:

Konvertieren Sie eine Sammlung von Name-Eltern-Name-Paare in einer hierarchischen Baumstruktur. Das Ziel besteht darin, verschachtelte ungeordnete HTML-Listen (

    ) zu generieren, die die Kind-Eltern-Beziehungen darstellen.

    Rekursiver Ansatz:

    Die Lösung verwendet zwei rekursive Funktionen. Die erste Funktion, parseTree(), durchläuft die Baumstruktur und erstellt einen hierarchischen Baum. Es sucht nach direkten Kindern einer angegebenen Wurzel und fügt sie dem resultierenden Baum hinzu, wobei die Kinder jedes Kindes rekursiv analysiert werden.

    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;    
    }
    Nach dem Login kopieren

    Die zweite Funktion, printTree(), durchläuft den von parseTree() generierten Baum und druckt das entsprechende HTML ungeordnet Liste.

    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>';
        }
    }
    Nach dem Login kopieren

    Verwendung:

    Um die angegebenen Name-Elternname-Paare in eine Baumstruktur umzuwandeln und die ungeordnete HTML-Liste zu drucken, würden Sie diese Funktionen als aufrufen folgt:

    $result = parseTree($tree);
    printTree($result);
    Nach dem Login kopieren

    Kombinierte Funktion:

    Zur Verbesserung Um die Effizienz zu steigern, können Sie die beiden Funktionen zu einer einzigen Funktion zusammenführen:

    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>';
        }
    }
    Nach dem Login kopieren

    Diese kombinierte Funktion vereinfacht den Parsing- und Druckprozess und reduziert die Anzahl der erforderlichen Iterationen.

    Das obige ist der detaillierte Inhalt vonWie erstelle ich einen hierarchischen HTML-Baum aus Eltern-Kind-Beziehungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Neueste Artikel des Autors
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage