zoukankan      html  css  js  c++  java
  • 关于树如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; }
  • 相关阅读:
    持续集成
    持续集成
    持续集成
    持续集成
    持续集成
    持续集成
    CuDNNLSTM: UnknownError: Fail to find the dnn implementation
    Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
    django nginx uwsgi 502 Gateway
    ubuntu nginx 启动多个Django项目
  • 原文地址:https://www.cnblogs.com/hjxcode/p/7768781.html
Copyright © 2011-2022 走看看