php 兩種獲取分類樹的方法


php 兩種獲取分類樹的方法

 

1.

/**
* 獲取分類樹
* @param array $array 數據源
* @param int $pid 父級ID
* @param int $level 分類級別
* @return string
*/
function getCategory($array, $pid =0, $level = 0){
//聲明靜態數組,避免遞歸調用時,多次聲明導致數組覆蓋
static $list = [];
foreach ($array as $key => $value){
//第一次遍歷,找到父節點為根節點的節點 也就是pid=0的節點
if ($value['parent_id'] == $pid){
//父節點為根節點的節點,級別為0,也就是第一級
$value['level'] = $level;
//把數組放到list中
$list[] = $value;
//把這個節點從數組中移除,減少后續遞歸消耗
unset($array[$key]);
//開始遞歸,查找父ID為該節點ID的節點,級別則為原級別+1
getCategory($array, $value['cat_id'], $level+1);
}
}
return $list;
}


2、

function getTree($items,$pid ="parent_id") {
$map = [];
$tree = [];
foreach ($items as &$it){
$it['id'] = (string)$it['cat_id'];
$it['label'] = $it['cat_name'];
unset($it['cat_id']);
unset($it['cat_name']);
$map[$it['id']] = &$it;
} //數據的ID名生成新的引用索引樹
foreach ($items as &$at){
$parent = &$map[$at[$pid]];
if($parent) {
$parent['children'][] = &$at;
}else{
$tree[] = &$at;
}
}
return $tree;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM