剛學PHP那會兒,遞歸真的是超級難;現在也說不上是簡單。也算是PHP的一個難點吧!
----最常見的遞歸無異於無限極分類;
----今天就以無限極分類和大家舉一個demo;
1. 我們先建一個簡單的菜單表,字段如下;
菜單表(groups);字段簡單舉例:id, pid, name;
2. 我們使用TP語法來實現;
public function index() {
$list = Db::table('groups')->select();
$res = $this->datas($list, $pid=0);
return $res;
}
// 遞歸查詢
public function datas($list, $pid=0) {
$newArr = [];
foreach ($list as $key => $value) {
if ($value['pid'] == $pid) {
$newArr[$value['id']] = $value;
// 關鍵點;根據pid(父級id)的不同再次調用方法;
$newArr[$value['id']]['zi'] = $this->data1($list, $value['id']);
}
}
return $newArr;
}
3. 上述方法通過php中文網的學習而認知的;以前所說是用遞歸實現了,但也查了好多遍數據庫;
優點:查詢了一遍數據庫,很大減輕了數據庫的負擔;代碼也很簡介;
2020年第一篇文章;也非常自己在新的一年中和大家技術有所提升,薪資飆漲;(只爭朝夕,不負韶華);