关于树如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; }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值