Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erklärung des rekursiven PHP-Algorithmus

Detaillierte Erklärung des rekursiven PHP-Algorithmus

墨辰丷
Freigeben: 2023-03-25 21:50:01
Original
5405 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die detaillierte Erklärung des rekursiven PHP-Algorithmus vor. Ich hoffe, dass er für alle hilfreich ist.

Wenn Sie auf eine Datenbankstruktur stoßen, die für Baumknoten entworfen werden muss, und auf eine Baumknoten-Datenstruktur, die ausgelesen werden muss! Wird sich jeder dafür entscheiden, eine Datenbankabfrage zu verwenden, um die Baumstruktur zu erhalten?

//曾经的数据库查询获取方式$res = $this->db->query("select * from menu where pid = 0");foreach($res as 
$k=>$v){     $res[$k]['child'] = $this->db->query("select * from menu where pid =".$v['id']);
}
Nach dem Login kopieren

//Erhalten Sie die Ergebnisse $res
Hinweis: Es muss gesagt werden, dass diese Methode zwar machbar ist, ihr Nachteil jedoch darin besteht, dass Sie die Anzahl der Ebenen und eine große Anzahl von Ausführungen festlegen müssen Abfragen in der Datenbank.
Ignorieren Sie nicht den Abfrageverbrauch der Datenbank. Es spielt keine Rolle, ob die Daten klein sind, aber die Datenmenge ist groß. Diese praktikable Methode wird eine große Belastung für das System darstellen!
Jeder muss also die Wahrheit verstehen. Manchmal sind Datenbankoperationen vorteilhafter als PHP-Programmalgorithmen, und manchmal ist das Gegenteil der Fall!
Im Fall dieses grundlegenden Baumknotens ist es am besten, einen Algorithmus zu verwenden.

PHP-Code-Algorithmus (CI-Framework-Implementierung: keine Werbung!)

  public function getMenus(){
    //查询
    $res = $this->db->get('menu')->result_array();    $res = $this->getChild($res);
    print_r($res);
}/**
 * 递归 树节点算法
 * @param array $array
 * @param number $pid
 */private function getChild($array,$pid = 0){
    $data = array();    foreach ($array as $k=>$v){        //PID符合条件的
        if($v['pid'] == $pid){            //寻找子集
            $child = $this->getChild($array,$v['id']);            //加入数组
            $v['child'] = $child?:array(); 
            $data[] = $v;//加入数组中
        }
    }    return $data;
}
Nach dem Login kopieren

//Der Vorteil davon ist, dass die Berechnungsgeschwindigkeit schnell, der Verbrauch gering und der Pegel variabel ist. Dies bedeutet, dass unabhängig davon, wie viele Ebenen in die Datenbank geschrieben sind, der Algorithmus erhalten werden kann
Ergebnis:

Array(

[0] => Array

    (

        [id] => 1
        [title] => PHP中文网
        [pid] => 0
        [sort] => 0
        [child] => Array
            (
            )

)
[1] => Array
    (
        [id] => 2
        [title] => 系统设置
        [pid] => 0
        [sort] => 99
        [child] => Array
            (
                [0] => Array
                    (
                        [id] => 4
                        [title] => 权限管理
                        [pid] => 2
                        [sort] => 2
                        [child] => Array
                            (
                            )

                    )

                [1] => Array
                    (
                        [id] => 5
                        [title] => 菜单栏目
                        [pid] => 2
                        [sort] => 0
                        [child] => Array
                            (
                            )

                    )

                [2] => Array
                    (
                        [id] => 3
                        [title] => 管理员
                        [pid] => 2
                        [sort] => 99
                        [child] => Array
                            (
                            )

                    )

            )

    )
)
Nach dem Login kopieren

Verwandte Empfehlungen:

Hanno in Python implementiert basierend auf rekursiven Algorithmustürmen und Fibonacci-Sequenzen

Rekursive Algorithmusimplementierung des PHP Tower of Hanoi-Problems und Implementierung des iterativen Algorithmus

Rekursion des PHP Tower der Implementierung des Hanoi-Problemalgorithmus und der iterativen Algorithmusimplementierung

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des rekursiven PHP-Algorithmus. 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