在一些項目中需要用到樹形結構來表示一些層級關系時候,可用如在layui框架中的laytree或者ztree來完成效果如圖
往往在獲取節點數值時候所需要的數據的結構比較復雜,比如laytree和ztree的節點數據結構都是如圖所示,即數組
下有children元素,然后里面又是一樣的結構循環下去
大概的需求就是上面這樣,在實際項目中設計好數據庫如下結構
然后通過后台獲取數據,組成所需的數組返回到前台,代碼在下面,看完注釋正常來說已經清楚了(*^__^*) 嘻嘻
public function lefttree(){
//獲取數據庫中的所有數據 $data = Db::name("archives_folder")->where("id>=0")->select(); //var_dump($data);
//定義接受數組 $arrs = array();
//調用函數recur $arrs = $this->recur($arrs,$data);
//輸出返回數據 return $arrs; }
//定義函數遞歸調用獲得需要的結構的數組 public function recur($arrs,$data,$pid=0){
//遍歷數據庫獲得的數據 foreach ($data as $k => $v){
//判斷該節點是否有子節點 if($v['pid'] == $pid){
//如果有,將該節點作為信息作為父幾點 $arr = array('name' => $v["folder_name"],'id'=>$v['id'],'children'=>array());
//遞歸調用recur函數,將子節點的id作為pid傳回去,判斷是否有子節點,然后將值賦予到現在即誒但的子節點,知道數組循環結束 $arr['children'] = $this->recur($arr["children"],$data,$v['id']);
//執行完遞歸后將結果追加到空數組中 array_push($arrs,$arr); } } return $arrs; }