博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP将数据集转换成树状结构
阅读量:7114 次
发布时间:2019-06-28

本文共 1565 字,大约阅读时间需要 5 分钟。

/** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * @param string $level level标记字段 * @return array */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;}/** * 将list_to_tree的树还原成列表 * @param  array $tree  原来的树 * @param  string $child 孩子节点的键 * @param  string $order 排序显示的键,一般是主键 升序排列 * @param  array  $list  过渡用的中间数组, * @return array        返回排过序的列表数组 */function tree_to_list($tree, $child = '_child', $order='id', &$list = array()){    if(is_array($tree)) {        $refer = array();        foreach ($tree as $key => $value) {            $reffer = $value;            if(isset($reffer[$child])){                unset($reffer[$child]);                tree_to_list($value[$child], $child, $order, $list);            }            $list[] = $reffer;        }        $list = list_sort_by($list, $order, $sortby='asc');    }    return $list;}

 

转载于:https://www.cnblogs.com/ningjiabing/p/10243129.html

你可能感兴趣的文章
C语言文件操作解析(一)
查看>>
matlab练习程序(Floyd–Steinberg dithering)
查看>>
Android之Handler用法总结
查看>>
《敏捷个人》周刊 第3期 (可下载)
查看>>
XPath and TXmlDocument
查看>>
JQ集合
查看>>
bootstrip可视化布局
查看>>
企业架构如何实施的简介(深度好文)
查看>>
python 一些基本操作
查看>>
Linux 的启动流程(转)
查看>>
【45】运用成员函数模版接受所有兼容类型
查看>>
flex graphiclar symbol的不同比例尺切换
查看>>
linux img文件压缩及解压
查看>>
当远程桌面到Windows终端服务器,出现终端服务器超出了最大允许连接数,怎么办...
查看>>
S3C2410 实验三——块拷贝、字拷贝(寄存器的理解)
查看>>
关于2014
查看>>
iOS web remote debug 正确的姿势
查看>>
MapGuide open source开发心得一:简介
查看>>
[转]ASP.NET 2.0 本地化功能:本地化 Web 应用程序的新方法
查看>>
ORACLE函数大全(CSDN)
查看>>