关于树如laytree,ztree节点数据的组装(递归实现)

Posted code

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于树如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; }

 

以上是关于关于树如laytree,ztree节点数据的组装(递归实现)的主要内容,如果未能解决你的问题,请参考以下文章

ztree添加节点问题

zTree的getChangeCheckedNodes()使用心得以及一次性获取zTree的所有节点

ztree可以给定父节点id,然后展开子项的方法吗

zTree根节点默认打开

ztree回显选中节点

项目一众筹网06_03给角色分配菜单权限表的设置使用zTree来实现节点判断(后端不写代码也能实现树形开发)接口不能写@service注解,实现类才能写