无限极分类中递归查找一个树结构
生活随笔
收集整理的這篇文章主要介紹了
无限极分类中递归查找一个树结构
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題:設計公司的員工表,員工有不同級別,要求可通過一個員工查到其下屬的所有員工,也可查到其所屬的上級。
解決:遞歸實現無限分類思想,每一個員工存入其所屬的上級的id作為自己的pid,另外存入path,path包含自身id,方便顯示路徑。
遞歸的注意點:
1.一定有一個判斷條件,否則遞歸就死循環了
2.每次的遞歸結果要保存起來,變量自增的實現三種方式:
function(&$bar):通過引用地址
global :通過設置為全局變量
static :設置為靜態變量
/*
|----副總王
|--------經理趙
|------------組長劉
|----------------員工趙
|----------------員工房
|--------經理光桿
*/
還是上邊的數據,現在要查一個員工的所有上級
/*** 傳入員工的id,可以查找員工所屬的上級* @param array $data 數組代替數據庫中的數據* @param integer $id 要查找的員工的id* @param array &$result 結果數組,&保證變量常駐* @return 結果*/ function getLink($data, $id=0, &$result=array()){ foreach ($data as $key => $val) { if ($val['uid'] == $id) { $result[] = $val['name']; getLink($data, $val['pid'], $result); } } return $result; } $res = getLink($arr , 5); //查找員工房的上級 foreach ($res as $key => $val) { echo $val." | "; } /* 員工房 | 組長劉 | 經理趙 | 副總王 | 總監張 | */注:也可用全路徑無限分類:數據中存了path,全路徑可通過concat(path,",",id)算出來。
優點:查詢快,比遞歸快
缺點:增加,移動分類時稍顯復雜
轉載于:https://www.cnblogs.com/KTblog/p/9025120.html
總結
以上是生活随笔為你收集整理的无限极分类中递归查找一个树结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何看待腾讯元宝对政府管理的影响?
- 下一篇: html5中高德、腾讯、百度 地图api