Heim >Backend-Entwicklung >PHP-Tutorial >Wie konvertiere ich Eltern-Kind-Beziehungen in hierarchische Bäume in PHP?

Wie konvertiere ich Eltern-Kind-Beziehungen in hierarchische Bäume in PHP?

Linda Hamilton
Linda HamiltonOriginal
2024-12-26 09:57:10417Durchsuche

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

Eltern-Kind-Beziehungen in hierarchische Bäume umwandeln

Beim Programmieren kann es notwendig sein, eine Reihe von Eltern-Kind-Beziehungen in eine umzuwandeln hierarchische Baumstruktur. Diese Aufgabe kann in PHP mithilfe eines rekursiven Ansatzes gelöst werden.

Beispieldaten:

Betrachten Sie den folgenden Satz von Eltern-Kind-Beziehungen:

Child : Parent
H : G
F : G
G : D
E : D
A : E
B : C
C : E
D : NULL

Umwandeln in einen hierarchischen Baum:

Um diese Daten in einen umzuwandeln Für die hierarchische Baumstruktur erstellen wir zwei PHP-Funktionen:

  • parseTree($tree, $root): Diese Funktion analysiert rekursiv die Kind-Eltern-Paare und erstellt den Baum.
  • printTree($tree): Diese Funktion durchläuft den Baum und druckt ihn als ungeordnete Liste.

parseTree-Funktion:

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

printTree-Funktion:

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>';
    }
}

Verwendung:

Um diese Funktionen zunächst zu nutzen Initialisieren Sie das Array der Kind-Eltern-Paare. Rufen Sie dann parseTree mit dem Array und printTree mit dem resultierenden Baum auf:

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

$result = parseTree($tree);
printTree($result);

Ergebnis:

Die Ausgabe wird eine ungeordnete Liste sein, die den hierarchischen Baum darstellt:

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

Das obige ist der detaillierte Inhalt vonWie konvertiere ich Eltern-Kind-Beziehungen in hierarchische Bäume in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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