Referenzmethode zur Implementierungsbaumgenerierung in PHP

墨辰丷
Freigeben: 2023-03-31 12:42:01
Original
2441 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Methode zum Generieren eines Referenzimplementierungsbaums in PHP vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Verwenden Sie immer noch die rekursive Durchquerung der Infinitus-Klassifizierung, die Zeit und Speicher verschwendet? Nachdem Sie diesen Artikel gelesen haben, sollten Sie meiner Meinung nach wechseln.

Dies ist eine sehr prägnante PHP-Infinitus-Klassifizierungs-Spanning-Tree-Methode, die ich zufällig auf OSChina gesehen und zum Teilen zusammengestellt habe.

Der Code lautet wie folgt:

function generateTree($items){
    $tree = array();
    foreach($items as $item){
        if(isset($items[$item['pid']])){
            $items[$item['pid']]['son'][] = &$items[$item['id']];
        }else{
            $tree[] = &$items[$item['id']];
        }
    }
    return $tree;
}
$items = array(
    1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),
    2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),
    3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),
    4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),
    5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),
);
print_r(generateTree($items));
Nach dem Login kopieren

Sie können das gedruckte Ergebnis unten sehen:

Der Code lautet wie folgt:

Array
(
    [0] => Array
        (
            [id] => 1
            [pid] => 0
            [name] => 安徽省
            [son] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [pid] => 1
                            [name] => 合肥市
                            [son] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 4
                                            [pid] => 3
                                            [name] => 长丰县
                                        )
 
                                )
 
                        )
 
                    [1] => Array
                        (
                            [id] => 5
                            [pid] => 1
                            [name] => 安庆市
                        )
 
                )
 
        )
 
    [1] => Array
        (
            [id] => 2
            [pid] => 0
            [name] => 浙江省
        )
 
)
Nach dem Login kopieren


Das Die obige Spanning-Tree-Methode kann ebenfalls vereinfacht werden. Gehen Sie zu Zeile 5:

Der Code lautet wie folgt:

function generateTree($items){
    foreach($items as $item)
        $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
    return isset($items[0]['son']) ? $items[0]['son'] : array();
}
Nach dem Login kopieren

Es lohnt sich, von der oben genannten baumstrukturierten Methode für unendliche Klassifizierungsdaten zu lernen. Aber ich denke, die tatsächliche Verwendung dieses Codes ist nicht offensichtlich. Wenn Sie die formatierten Baumdaten herausnehmen möchten, müssen Sie immer noch rekursieren:

Der Code lautet wie folgt:

/**
 * 如何取数据格式化的树形数据
 */
$tree = generateTree($items);
function getTreeData($tree){
    foreach($tree as $t){
        echo $t[&#39;name&#39;].&#39;<br>&#39;;
        if(isset($t[&#39;son&#39;])){
            getTreeData($t[&#39;son&#39;]);
        }
    }
}
getTreeData($tree);
Nach dem Login kopieren

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

So implementieren Sie die Persistenzschicht in PHP

So erhalten Sie den Datei-MIME-Typ php

So verwenden Sie PHP, um die Datenbank zu betreiben und festzustellen, ob eine Tabelle vorhanden ist

Das obige ist der detaillierte Inhalt vonReferenzmethode zur Implementierungsbaumgenerierung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!