php 数组变成树状型结构
<? php
$stime = microtime(true);
$nodes = [
['id' = > 1, 'pid' = > 0, 'name' = > 'a'],
['id' = > 2, 'pid' = > 0, 'name' = > 'b'],
['id' = > 3, 'pid' = > 1, 'name' = > 'c'],
['id' = > 4, 'pid' = > 2, 'name' = > 'd'],
['id' = > 5, 'pid' = > 6, 'name' = > 'e'],
['id' = > 6, 'pid' = > 4, 'name' = > 'f'],
['id' = > 7, 'pid' = > 6, 'name' = > 'g'],
['id' = > 8, 'pid' = > 6, 'name' = > 'h'],
['id' = > 9, 'pid' = > 10, 'name' = > 'i'],
['id' = > 10, 'pid' = > 8, 'name' = > 'j']
]; function tree($list, $id = 'id', $pid = 'pid', $name = 'name') {
$data = [];
foreach($list as $row) {
$data[$row[$id]][$name] = $row[$name];
$data[$row[$pid]]['children'][$row[$id]] = & $data[$row[$id]];
}
return isset($data[0]['children']) ? $data[0]['children'] : [];
}
print_r(tree($nodes));
$etime = microtime(true);
echo '运行后内存:'.round(memory_get_usage() / 1024 / 1024, 2).
'MB \r\n';
$total = $etime - $stime; //计算差值
echo "[页面执行时间:{$total} ]秒"; ?>
php 数组变成树状型结构的更多相关文章
- 关于idea的目录结构如何变成树状,也就是横向变纵向
横向 竖向 方法:
- php 二维数组转换成树状数组(转)
<?php/** * @param array $list 要转换的结果集 * @param string $pid parent标记字段 * @param string $level leve ...
- tree 数状型结构显示目录下的内容
1. 命令功能 tree中文意思“树”,以树形结构显示目录内容.. 2. 语法格式 tree [option] [directory] tree 选项 目录 3. 使用范例 当最小化安装l ...
- js List<Map> 将偏平化的数组转为树状结构并排序
数据格式: [ { "id":"d3e8a9d6-e4c6-4dd8-a94f-07733d3c1b59", "parentId":&quo ...
- js修改父子json格式成树状结构格式
js修改父子json成树状结构 var json = [ { "id" : "01", "pId":"" } , { & ...
- linux 把ls -R格式化成树状结构
谁能写脚本把linux中的ls -R命令的结果格式化成树状结构? 最好是shell脚本!欢迎讨论! 参与讨论有可能意外获取iPhone6哦~~
- JSP中的一个树型结构
看方力勋的javaWeb,采用左右值来表示树型结构(就是俺门的多级分类)表结构 页面代码 <%@ page language="java" import="java ...
- char型字符串(数组)与string型字符串 指针与引用
一.常指针: int *const p; //指针不可改变,但是指针指向的数据可以改变. 指向常量的指针: const int *p; //指针可以改变,但是指针指向的数据不可以改变. 指 ...
- 20-Ubuntu-文件和目录命令-查看目录树型结构-tree
tree 以树状图列出当前目录下的文件目录结构 选项 含义 -d 只显示当前目录的子目录树型结构 显示当前目录的子目录和文件树型结构 例: 1.查看文档目录下的子目录和文件树型结构 2.查看文档目 ...
随机推荐
- 科普:String hashCode 方法为什么选择数字31作为乘子
1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法.然后大致看了一下 hashCode 的实现,发现并不是很复杂.但是我从源码中发现了一个奇怪的数字,也就是本文的主 ...
- nginx 防火墙、权限问题
1.nginx安装,配置完成之后,尝试访问没有响应,主机可以ping通,/var/log/nginx/access.log日志没有查到任何记录 解决方法:查看linux防火墙,关闭 命令:ipta ...
- Cocoa的MVC架构分析
Cocoa是Mac OS和iPhone OS上的开发框架,使用Objective-C做为开发语言.当然,在代码中也可以嵌入C和C++的语句.初识Objective-C时会觉得它的语法很奇怪,但本质上和 ...
- Java hashtable和hastmap的区别
1. 继承和实现区别 Hashtable是基于陈旧的Dictionary类,完成了Map接口:HashMap是Java 1.2引进的Map接口的一个实现(HashMap继承于AbstractMap,A ...
- [知了堂学习笔记]_Jquery_Validate 表单校验的使用
一.效果图: 二.JqueryValidate的好处 在做注册.或者类似以上的表单提交的时候,大家是不是都很烦那种,把数据拿到后台去判断, 可能经过了正则表达式之类的复杂判断,然后发现数据错误.接着通 ...
- scrapy_创建_调试
如何创建scrapy项目? 输入命令: scrapy startproject project_name 在当前目录下创建名字叫project_name的scrapy项目 命令格式:scrapy st ...
- JavaScript小结
语法小结 /** * Created by M.C on 2017/5/26. */ /*弹框*/ //var message = "Hello world"; //alert(m ...
- java基础-静态,非静态(构造)代码块,类加载
static block and non-static block(constructor block) [toc] 想来想去,先来一题比较好 public class Foo { public st ...
- test for python socket
server: #!/usr/bin/python import socket import threading import time def tcplink(sock, addr): print ...
- 【Python3之迭代器,生成器】
一.可迭代对象和迭代器 1.迭代的概念 上一次输出的结果为下一次输入的初始值,重复的过程称为迭代,每次重复即一次迭代,并且每次迭代的结果是下一次迭代的初始值 注:循环不是迭代 while True: ...