直接上代码,在onethink里面使用的转换树状结构/** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * @param string $level level标记字段 * @return array * @author 麦当苗儿 */function li

方法1

直接上代码,在onethink里面使用的转换树状结构

/**

* 把返回的数据集转换成Tree

* @param array $list 要转换的数据集

* @param string $pid parent标记字段

* @param string $level level标记字段

* @return array

* @author 麦当苗儿 */

function list_to_tree($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0) {

// 创建Tree

$tree = array();

if(is_array($list)) {

// 创建基于主键的数组引用

$refer = array();

foreach ($list as $key => $data) {

$refer[$data[$pk]] =& $list[$key];

}

foreach ($list as $key => $data) {

// 判断是否存在parent

$parentId = $data[$pid];

if ($root == $parentId) {

$tree[] =& $list[$key];

}else{

if (isset($refer[$parentId])) {

$parent =& $refer[$parentId];

$parent[$child][] =& $list[$key];

}

}

}

}

return $tree;

}

ps:这个函数最主要的是通过&引用(引用:同一个变量,不同的名字。与c指针不同,指针里面是变量的内容,是内存中的地址。)

$refer[$data[$pk]] = & $list[$key];

这里的$refer[$data[$pk]]就是引用了 $list[$key] 地址了

$tree这个变量也是引用的$list里面的内容

返回$tree就是返回$list里面的内容

方法2

function generateTree2($rows, $id='id', $pid='pid'){

$items = array();

foreach ($rows as $row) $items[$row[$id]] = $row;

foreach ($items as $item) $items[$item[$pid]]['son'][$item[$id]] = &$items[$item[$id]];

return isset($items[0]['son']) ? $items[0]['son'] : array();

}

1,和上面的一样,创建基于主键的数组

2,通过引用到父级分类下面

php树形结构变成线性结构,php把数据集转换成树状结构,无限极分类生成树状 – CSDN博客...相关推荐

  1. java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)的方法

    SQL Server 2005开始,我们可以直接通过CTE来支持递归查询,CTE即公用表表达式 百度百科 公用表表达式(CTE),是一个在查询中定义的临时命名结果集将在from子句中使用它.每个CTE ...

  2. 无限极分类php简单,创建无限极分类树型结构的简单方法

    先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类 ...

  3. 结构之法算法之道CSDN博客-第一期全部博文集锦[CHM 文件下载]

    结构之法算法之道CSDN博客- 博文集锦第一期CHM 文件 首先恭喜你,你得到了一份非常宝贵的资源. 此份文件是截止到2011年2月27日,本博客.结构之法算法之道博客内的第一期全部内容的集锦,同时, ...

  4. 无人驾驶运动学模型——线性时变模型预测控制的思路推演过程_百叶书的博客-CSDN博客_线性时变模型预测控制 转

    无人驾驶运动学模型--线性时变模型预测控制的思路推演过程_百叶书的博客-CSDN博客_线性时变模型预测控制

  5. java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)

    SQL Server 2005开始,我们可以直接通过CTE来支持递归查询,CTE即公用表表达式 百度百科 公用表表达式(CTE),是一个在查询中定义的临时命名结果集将在from子句中使用它.每个CTE ...

  6. 利用链式存储结构实现线性表

    本图文主要介绍了如何利用链式存储结构实现线性表.

  7. android栈式存储,线性表数据结构解读(三)栈结构Stack

    在上一篇文章中,我们详细介绍了链式存储结构,并结合LinkedList源码进行了分析,相关文章大家可以点击这里回看我的博客:线性表数据结构解读(二)链式存储结构LinkedList 栈的定义 栈是一种 ...

  8. php 递归栏目名叠加,thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法,thinkphp递归...

    thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法,thinkphp递归 本文实例讲述了thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法.分享给大家供大家参考,具体如下: 这 ...

  9. 数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

最新文章

  1. Python中关于split和splitext的差别和运用
  2. c语言求泰勒正弦公式,用泰勒公式求sin(x)的近似值
  3. Linux与Windows比较出的20个优势
  4. win10高分辨率下修改字体显示大小(不是缩放百分比)
  5. android 手机 与 python服务器_Python服务器与多种客户端(Python/Java/Android)之间的通信...
  6. python不同模式打开文件的完全列表
  7. 阿里大牛总结:学会这些Kafka知识,吊打面试官就是分分钟的事
  8. PHP Mysql or条件排序问题
  9. 保护电路:简单的限流保护电路图
  10. 银联手机POS,支付黑科技
  11. vue + web 前端访问后端,跨域问题解决方案
  12. 菜鸟的Android之路-02《eclipse新建android project》
  13. 章文嵩:开源,LVS,以及留下的无数传说
  14. php验证qq,正则表达式验证qq号码是否输入正确
  15. 外挂三部曲(三) —— Android 图片相似度对比
  16. mysql 页分裂_InnoDB中的页合并与分裂
  17. 集成redis,删除key报“srem“异常
  18. Mybatis日志源码探究
  19. 自学网络安全的三个必经阶段(含路线图)
  20. Project Euler Problem 66

热门文章

  1. linux中256错误,YUM安装遭遇: [Errno 256] No more mirrors to try
  2. python矩阵运算dot_矩阵、张量乘法(numpy.tensordot)的时间复杂度分析
  3. 计算机模块考试注意事项,常考计算机模块考试操作注意事项.doc
  4. mysql window怎么安装补丁_window下mysql安装步骤
  5. python 微信_wxpy: 用 Python 玩微信
  6. misc高阶 攻防世界_玄幻世界(修真、仙侠、奇幻、神话)修炼体系基础模型设定。...
  7. layui的表格可以动态添加行吗_答疑分享052:插入表格,数据分析更方便
  8. 从一点儿不会开始——Unity3D游戏开发学习(一)
  9. 三维动画制作的基本流程
  10. python 安装 HTMLtestRunner(转)