在無限分類應用中, 有時我們希望將得到的無限分類從數(shù)據(jù)庫中提取出來后生成樹形的數(shù)組, 這里看到一位PHP工程師的代碼, 感覺非常巧妙, 分享一下
1. 無限分類表格如下:
2. tp5的DB類讀取數(shù)據(jù), 并將數(shù)據(jù)做一個轉(zhuǎn)化
3. makeTree函數(shù)如下:
5. 最終打印結(jié)果如下
附上代碼供拷貝:
public function index(Sortclass $sort){
$datas = Db::name("column")->where("id","<=",10)
->field("id,sortname,parentid")
->order("id desc")
->select();
$d = [];
foreach($datas as $row){
$d[$row["id"]] = $row; //將每行的索引值 設置為 每行的ID
}
dump($this->makeTree($d));
}
public function makeTree($datas){
$rowTree = [];
foreach ($datas as $id=>$row){
if(isset($datas[$row["parentid"]])){
$datas[$row["parentid"]]["children"][] = $datas[$id];
//將所的有子類放到 父類 ID 對應數(shù)組的 children鍵名下
} else {
$rowTree[] = $datas[$id];
}
}
return $rowTree;
}
