Codebeispiele für die PHP-Infinitus-Klassifizierung (rekursiv und baumartig)

不言
Freigeben: 2023-04-05 07:28:02
nach vorne
1739 Leute haben es durchsucht

Was dieser Artikel Ihnen bringt, ist das Codebeispiel (Rekursion und Baum) der PHP-Infinitus-Klassifizierung. Ich hoffe, dass es für Sie hilfreich ist.

(1). Rekursive Implementierung von

function getTree($array, $pid =0, $level = 0){
//声明静态数组,避免递归调用时,多次声明导致数组覆盖 
static $list = []; 
foreach ($array as $key => $value){     
//第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点  
if ($value['pid'] == $pid){
//父节点为根节点的节点,级别为0,也就是第一级
$value['level'] = $level;
//把数组放到list中
$list[] = $value;
//把这个节点从数组中移除,减少后续递归消耗           
unset($array[$key]);           
//开始递归,查找父ID为该节点ID的节点,级别则为原级别+1          
getTree($array, $value['id'], $level+1);
        }
    } 
return $list;
}
Nach dem Login kopieren

Das Ergebnis ist wie in der Abbildung dargestellt:

(2).

function getTree($items,$pid ="pid") {
    $map  = [];
    $tree = []; 
foreach ($items as &$it){ $map[$it['id']] = &$it; }  
//数据的ID名生成新的引用索引树   
foreach ($items as &$at){
        $parent = &$map[$at[$pid]];    
if($parent) {
            $parent['children'][] = &$at;
        }else{
            $tree[] = &$at;
        }
    }
return $tree;
}
Nach dem Login kopieren

Das Ergebnis ist wie abgebildet:

Das obige ist der detaillierte Inhalt vonCodebeispiele für die PHP-Infinitus-Klassifizierung (rekursiv und baumartig). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:cnblogs.com
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