PHP基于变量的引用实现的树状结构
直接上代码:
function aryTree($ary, $tagId = 'id', $tagPid = 'pid', $tagSub = '_sub') {
if(is_array($ary)) {
$refer = array(); // 创建基于主键(id)的数组引用(映射)
foreach ($ary as $k => $v) {
$refer[$v[$tagId]] =& $ary[$k]; // "引用":不同的变量名访问同一个内容
}
foreach ($ary as $k => $v) {
if (isset($refer[$v[$tagPid]])) {
$parent =& $refer[$v[$tagPid]];
$parent[$tagSub][$v[$tagId]] =& $ary[$k];
unset($ary[$k]);
}
}
unset($refer);
}
return $ary;
}
以下Function是可设置父级级别的代码:
function aryTree($ary, $id = 'id', $pid = 'pid', $sub = '_sub', $root = 0) {
$tree = array();
if(is_array($ary)) {
$refer = array();
foreach ($ary as $k => $v) {
$refer[$v[$id]] =& $ary[$k];
}
foreach ($ary as $k => $v) {
$parentId = $v[$pid];
if ($root == $parentId) {
$tree[$v[$id]] =& $ary[$k];
}else{
if (isset($refer[$parentId])) {
$parent =& $refer[$parentId];
$parent[$sub][$v[$id]] =& $ary[$k];
unset($ary[$k]);
}
}
}
unset($refer, $ary);
}
return $tree;
}
PHP基于变量的引用实现的树状结构的更多相关文章
- 浅谈oracle树状结构层级查询之start with ....connect by prior、level及order by
浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...
- oracle存储过程删除树状结构的表数据
今天在删除一个车辆品牌表的时候,遇到了一个问题,是在java的代码中做逻辑删除还是直接在Oracle中一次删除完成呢 思来想去觉得还是在sql里直接删除比较合适, 为什么呢? 第一,涉及数据库的读写操 ...
- 原生JS实现树状结构列表
树状结构列表,这个技术点之前有写过了,是基于vue讲解,但似乎都没有解决痛点,最基础的原生JS该怎么实现呢? 这篇文章会全面详细的介绍树状结构列表的实现,从数据处理成树状结构,到动态生成dom节点渲染 ...
- 树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示
树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:pa ...
- 分享使用NPOI导出Excel树状结构的数据,如部门用户菜单权限
大家都知道使用NPOI导出Excel格式数据 很简单,网上一搜,到处都有示例代码. 因为工作的关系,经常会有处理各种数据库数据的场景,其中处理Excel 数据导出,以备客户人员确认数据,场景很常见. ...
- 由简入繁实现Jquery树状结构
在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一些插件,也是可以实现这些效果的,比 ...
- php实现树状结构无级分类
php实现树状结构无级分类 ).",'树2-1-1-2')";mysql_query($sql);?>
- Android无限级树状结构
通过对ListView简单的扩展.再封装,即可实现无限层级的树控件TreeView. package cn.asiontang.nleveltreelistview; import android.a ...
- 使用Map辅助拼装树状结构,消除递归调用
目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...
随机推荐
- 每个人应该知道的NVelocity用法
NVelocity是一个基于.NET的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象.从而使得界面设 ...
- Mvc4.0添加商品到Cookie
/// <summary> /// 添加Cookie /// </summary> /// <param name="gc">GoodsToCo ...
- 从头开始-06.C语言中预处理指令
预处理指令 不带参数的宏定义: 格式: #define 宏名 值 作用:提高代码的可读性 在程序编译前把所有出现宏名标示的位置都替换为定义宏的时候,宏名后面的值 带参数的宏定义 格式 #define ...
- mysql优化(2) 观察mysql进程状态
环境准备,安装sysbench wget http://nchc.dl.sourceforge.net/project/sysbench/sysbench/0.4.12/sysbench-0.4.12 ...
- 6 支持向量机SVM
注:理论部分参考:http://blog.csdn.net/v_july_v/article/details/7624837 (1)SVM是现成最好的分类器,这里“现成”指的是分类器不加修改即可直接使 ...
- Apache Spark2.0正式发布
Apache Spark2.0正式发布 7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之 ...
- Http Analyzer 数据抓包
一.工具简介 这是一款实时分析 HTTP/HTTPS 数据流的工具.它可以实时捕捉HTTP/HTTPS 协议数据,可以显示许多信息(包括:文件头.内容.Cookie.查询字符窜.提交的数据.重定向的U ...
- Oracle日志性能查看
http://blog.chinaunix.net/uid-20784775-id-373968.html http://www.orafaq.com/wiki/Scripts https://com ...
- ECO
ECO(生态环保的简写) 在与环保相关的概念和资料中,ECO 是ECOLOGICAL的缩写,用来表示生态环保的意思.与之相关产生了一些新的名词,尤其是在房地产楼书中常常被提及,如: ECO-HOME, ...
- 震撼,强烈推荐 OrangeUI For FireMonkey
今天,高勇上传了一个演示rtx for kbmMW的android应用,我下载测试,被实际的效果给震惊了!万万想不到的,用OrangeUI做的一个List列表,数据通过远程查询,运行效果在我看来,达到 ...