树形数据处理

Posted 亦星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树形数据处理相关的知识,希望对你有一定的参考价值。

数据库

Controller递归处理

public function getDeptTree() {
        $deptdata = Db::table(\'dept\')->field(\'dept_name,dept_no,p_id\')->select();
        $showdata = $this->getTree($deptdata, $p_id = 0, $depth = 0);
        $data = json($showdata);
        return $data;
    }
    // //部门树形数据组装
    public function getTree($treedata, $p_id, $depth) {
        $retnArr = array();
        if (!empty($treedata)) {
            foreach ($treedata as $key => $info) {
                if ($info[\'p_id\'] == $p_id) {
                    $info[\'depth\'] = $depth;
                    $temp_info = $info;
                    foreach ($treedata as $subinfo) {
                        if ($subinfo[\'p_id\'] == $info[\'dept_no\']) {
                            $temp_info[\'sub\'] = $this->getDeptTree($treedata, $info[\'dept_no\'], $depth + 1);
                        } 
                    }
                    $retnArr[] = $temp_info;
                } 
            } 

        } 
        return $retnArr;
    }

  

 

递归处理后返回的json类型数据

 

view:

<div>
<ul id="tree" class="filetree"></ul>
</div>

<script>
  //页面加载
  $(function(){
    //递归遍历方法
    function getTrees(obj,data){
        for(var i=0;i<data.length;i++){
          var ul = $("<ul></ul>");
          var childli= $(\'<li><span class="folder">\'+data[i][\'dept_name\']+\'</span></li>\');
          childli.appendTo(obj).append(ul);
          if(data[i][\'sub\']){
            getTrees(ul,data[i][\'sub\']);
          }
        }     
    }
//页面加载时发送异步请求返回json类型树形数据,进行递归处理
    $.ajax({
            url: "{:url(\'deptc/getDeptTree\')}",
            type: \'post\',
            dataType: \'json\',
            error: function(data) {
                console.log(data);
            },
            success: function(data) {
                  // var li=$(\'<li><span class="folder">\'+data[0][\'dept_name\']+\'</span></li>\');
                  // $(li).appendTo($(\'#tree\'));
                  getTrees($("#tree"),data);
                  $("#tree").treeview();
              }
        });
  });

</script>

  效果:

 

以上是关于树形数据处理的主要内容,如果未能解决你的问题,请参考以下文章

Js 代码递归实现树形数据与数组相互转换。

输出二叉树树形的数据结构程序代码怎么写

整理树形结构数据

怎样在 MySQL 表中存储树形结构数据

vscode一些插件介绍

Android之DOM解析XML