1. /**
  2. * 把返回的数据集转换成Tree
  3. * @param array $list 要转换的数据集
  4. * @param string $pid parent标记字段
  5. * @param string $level level标记字段
  6. * @return array
  7. */
  8. function list_to_tree($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0) {
  9. // 创建Tree
  10. $tree = array();
  11. if(is_array($list)) {
  12. // 创建基于主键的数组引用
  13. $refer = array();
  14. foreach ($list as $key => $data) {
  15. $refer[$data[$pk]] =& $list[$key];
  16. }
  17. foreach ($list as $key => $data) {
  18. // 判断是否存在parent
  19. $parentId = $data[$pid];
  20. if ($root == $parentId) {
  21. $tree[] =& $list[$key];
  22. }else{
  23. if (isset($refer[$parentId])) {
  24. $parent =& $refer[$parentId];
  25. $parent[$child][] =& $list[$key];
  26. }
  27. }
  28. }
  29. }
  30. return $tree;
  31. }
  32.  
  33. /**
  34. * 将list_to_tree的树还原成列表
  35. * @param array $tree 原来的树
  36. * @param string $child 孩子节点的键
  37. * @param string $order 排序显示的键,一般是主键 升序排列
  38. * @param array $list 过渡用的中间数组,
  39. * @return array 返回排过序的列表数组
  40. */
  41. function tree_to_list($tree, $child = '_child', $order='id', &$list = array()){
  42. if(is_array($tree)) {
  43. $refer = array();
  44. foreach ($tree as $key => $value) {
  45. $reffer = $value;
  46. if(isset($reffer[$child])){
  47. unset($reffer[$child]);
  48. tree_to_list($value[$child], $child, $order, $list);
  49. }
  50. $list[] = $reffer;
  51. }
  52. $list = list_sort_by($list, $order, $sortby='asc');
  53. }
  54. return $list;
  55. }

PHP将数据集转换成树状结构的更多相关文章

  1. javascript将list转换成树状结构

    /** * 将list装换成tree * @param {Object} myId 数据主键id * @param {Object} pId 数据关联的父级id * @param {Object} l ...

  2. js修改父子json格式成树状结构格式

    js修改父子json成树状结构 var json = [ { "id" : "01", "pId":"" } , { & ...

  3. linux 把ls -R格式化成树状结构

    谁能写脚本把linux中的ls -R命令的结果格式化成树状结构? 最好是shell脚本!欢迎讨论! 参与讨论有可能意外获取iPhone6哦~~

  4. js中把ajax获取的数据转化成树状结构(并做成多级联动效果)

    1.首先通过ajax获取数据,此处省略,直接贴出获取到的数据格式 var arr = [{ id: 1, name: "一级标题", pid: 0 }, { id: 2, name ...

  5. php 二维数组转换成树状数组(转)

    <?php/** * @param array $list 要转换的结果集 * @param string $pid parent标记字段 * @param string $level leve ...

  6. 05 - json转成树状结构

    var jsonData = eval(`[ {"id":"4","pid":"1","name": ...

  7. iOS:二叉树多级表格的使用,使用三方库TreeTableView-master实现对json解析数据的递归遍历整理成树状结构

    在项目中,我们有时需要使用二叉树来实现多级表格的递归遍历查询,如果对二叉树比较懂,那么写起来其实也不费事,为了节省开发时间,下面介绍一下第三方库TreeTableView-master,这个三方库上给 ...

  8. php 数据集转换树、递归重组节点信息多维数组(转)

    一.将数据集转换成树 /** * 将返回的数据集转换成树 * @param array $list 数据集 * @param string $pk 主键 * @param string $pid 父节 ...

  9. 使用Map辅助拼装树状结构,消除递归调用

    目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...

随机推荐

  1. Mac下查看端口占用情况

    为什么 后端开发时,有时会碰到服务无法正常启动,端口被占用.这时需要查看端口占用情况. 是什么 需要用到一些Linux命令. 怎么做 查看占用端口51805的进程 lsof -n -P -i TCP ...

  2. Docker部署Portainer搭建轻量级可视化管理UI

    1. 简介   Portainer是一个轻量级的可视化的管理UI,其本身也是运行在Docker上的单个容器,提供用户更加简单的管理和监控宿主机上的Docker资源. 2. 安装Docker   Doc ...

  3. Java 方法内联

    什么是Java 方法内联? 我们先来看看普遍的内联函数含义.在维基百科中解释为: 内联函数:在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函 ...

  4. Hbase系列文章

    Hbase系列文章 HBase(一): c#访问hbase组件开发 HBase(二): c#访问HBase之股票行情Demo HBase(三): Azure HDInsigt HBase表数据导入本地 ...

  5. matplotlib的学习4-设置坐标轴

    import matplotlib.pyplot as plt import numpy as np x = np.linspace(-3, 3, 50) y1 = 2*x + 1 y2 = x**2 ...

  6. Linux课程知识点总结(一)

    Linux课程知识点总结(一) 一.Linux系统的简介 1.1 什么是Linux Linux是一个免费的多用户.多任务的操作系统,其运行方式.功能和Unix系统很相似,但Linux系统的稳定性.安全 ...

  7. Hive动态分区详解

    目录 动态分区调整 注意 动态分区插入 动静分区结合 例子 动态分区调整 动态分区属性:设置为true表示开启动态分区功能(默认为false)hive.exec.dynamic.partition=t ...

  8. 回顾 2020 年 GitHub 的大事件,你知道多少?

    作者:HelloGitHub-小鱼干 这里是 HelloGitHub 出品的年度盘点系列,本期我们将盘点 GitHub 在 2020 发生的大事件,回顾一下今年 GitHub 给我们带来了那些惊喜.故 ...

  9. Core3.0全局捕获异常

    前言 此方法由百度所得,找不到原文链接了 步骤 1.创建异常捕获类 using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; u ...

  10. Blogs实现侧边公告栏设置

    说明:只需要在博客侧边栏公告(支持HTML代码) (支持 JS 代码)里面添加如下代码 #1.博客运行时长统计 <!--博客运行时长显示开始--!> <div id="sh ...