關於樹如laytree,ztree節點數據的組裝(遞歸實現)


在一些項目中需要用到樹形結構來表示一些層級關系時候,可用如在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; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM