Heim > Artikel > Backend-Entwicklung > So implementieren Sie einen unendlichen Klassifizierungsbaum in PHP
In diesem Artikel wird hauptsächlich die Methode zur Implementierung des Infinitus-Klassifizierungsbaums in PHP vorgestellt. Er analysiert kurz die Prinzipien und Implementierungsmethoden der Infinitus-Klassifizierung und umfasst PHP-Array-Traversal- und Beurteilungsfunktionen dazu
Die Details lauten wie folgt:
Das aktuelle Design der Klassifizierungsdatenbank lautet im Wesentlichen: Jede Klassifizierung verfügt über ein ID-Primärschlüsselfeld und eine PID zeigt auf die ID der übergeordneten Klasse Auf diese Weise können unbegrenzte Klassifizierungsebenen erreicht werden und die abgerufenen Daten haben das folgende Format:
$arr = array( array("id" => 1 , "pid" => 0 , 'cat' => '栏目一'), array("id" => 2 , "pid" => 0 , 'cat' => '栏目二'), array("id" => 3 , "pid" => 1 , 'cat' => '栏目三'), array("id" => 4 , "pid" => 2 , 'cat' => '栏目四'), array("id" => 5 , "pid" => 1 , 'cat' => '栏目五'), array("id" => 6 , "pid" => 5 , 'cat' => '栏目六'), array("id" => 7 , "pid" => 5 , 'cat' => '栏目七'), array("id" => 8 , "pid" => 6 , 'cat' => '栏目八'), array("id" => 9 , "pid" => 1 , 'cat' => '栏目九'), array("id" => 10 , "pid" => 0 , 'cat' => '栏目十'), array("id" => 11 , "pid" => 10 , 'cat' => '栏目十一'), array("id" => 12 , "pid" => 11 , 'cat' => '栏目十二'), array("id" => 13 , "pid" => 2 , 'cat' => '栏目十三'), array("id" => 14, "pid" => 13 , 'cat' => '栏目十四') );
Ohne weitere Umschweife , gehen wir direkt zum Verarbeitungscode:
//生成无限极分类树 function make_tree($arr){ $refer = array(); $tree = array(); foreach($arr as $k => $v){ $refer[$v['id']] = & $arr[$k]; //创建主键的数组引用 } foreach($arr as $k => $v){ $pid = $v['pid']; //获取当前分类的父级id if($pid == 0){ $tree[] = & $arr[$k]; //顶级栏目 }else{ if(isset($refer[$pid])){ $refer[$pid]['subcat'][] = & $arr[$k]; //如果存在父级栏目,则添加进父级栏目的子栏目数组中 } } } return $tree; }
Testlauf:
$cat = make_tree($arr); print_r($cat);
Laufergebnis:
Array ( [0] => Array ( [id] => 1 [pid] => 0 [cat] => 栏目一 [subcat] => Array ( [0] => Array ( [id] => 3 [pid] => 1 [cat] => 栏目三 ) [1] => Array ( [id] => 5 [pid] => 1 [cat] => 栏目五 [subcat] => Array ( [0] => Array ( [id] => 6 [pid] => 5 [cat] => 栏目六 [subcat] => Array ( [0] => Array ( [id] => 8 [pid] => 6 [cat] => 栏目八 ) ) ) [1] => Array ( [id] => 7 [pid] => 5 [cat] => 栏目七 ) ) ) [2] => Array ( [id] => 9 [pid] => 1 [cat] => 栏目九 ) ) ) [1] => Array ( [id] => 2 [pid] => 0 [cat] => 栏目二 [subcat] => Array ( [0] => Array ( [id] => 4 [pid] => 2 [cat] => 栏目四 ) [1] => Array ( [id] => 13 [pid] => 2 [cat] => 栏目十三 [subcat] => Array ( [0] => Array ( [id] => 14 [pid] => 13 [cat] => 栏目十四 ) ) ) ) ) [2] => Array ( [id] => 10 [pid] => 0 [cat] => 栏目十 [subcat] => Array ( [0] => Array ( [id] => 11 [pid] => 10 [cat] => 栏目十一 [subcat] => Array ( [0] => Array ( [id] => 12 [pid] => 11 [cat] => 栏目十二 ) ) ) ) ) )
Verwandte Empfehlungen:
So erstellen Sie eine unendliche Klassifizierungsbaumstruktur
PHP implementiert den Infinitus-Klassifizierungsbaum ohne Rekursion
Eine kurze Einführung in die Infinitus-Klassifizierungsbaumstruktur
Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen unendlichen Klassifizierungsbaum in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!