日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

將無(wú)限分類(lèi)數(shù)據(jù)巧妙生成樹(shù)形數(shù)組

時(shí)間:2019-02-16 22:33:08 類(lèi)型:PHP
字號(hào):    

在無(wú)限分類(lèi)應(yīng)用中, 有時(shí)我們希望將得到的無(wú)限分類(lèi)從數(shù)據(jù)庫(kù)中提取出來(lái)后生成樹(shù)形的數(shù)組, 這里看到一位PHP工程師的代碼, 感覺(jué)非常巧妙, 分享一下

1. 無(wú)限分類(lèi)表格如下:

2. tp5的DB類(lèi)讀取數(shù)據(jù), 并將數(shù)據(jù)做一個(gè)轉(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; //將每行的索引值 設(shè)置為 每行的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];
			 	//將所的有子類(lèi)放到 父類(lèi) ID 對(duì)應(yīng)數(shù)組的 children鍵名下
			} else {
			 	$rowTree[] = $datas[$id];
			}
		}
		return $rowTree;
	}