php 二维数组转换成树状数组(转)
<?php
/**
* @param array $list 要转换的结果集
* @param string $pid parent标记字段
* @param string $level level标记字段
*/
function list_to_tree($list, $pk='id', $pid = 'pid', $child = 'listArea', $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
$parantId = $data[$pid];
if ($root == $parantId) {
$tree[] = &$list[$key];
} else {
if (isset($refer[$parantId])) {
$parent = &$refer[$parantId];
$parent[$child][] = &$list[$key];
}
}
}
}
return $tree;
}
$arr = array(
array('id'=>1,'pid'=>0,'name' => urlencode('大连'), 'code' => 'dd', 'listArea' => array()),
array('id'=>2,'pid'=>1,'name' => urlencode('香港'), 'code' => 'dd', 'listArea' => array()),
array('id'=>4,'pid'=>3,'name' => 'm', 'code' => 'dd', 'listArea' => array()),
array('id'=>2,'pid'=>1,'name' => 'gg', 'code' => 'aa', 'listArea' => array()),
array('id'=>3,'pid'=>1,'name' => 'e', 'code' => 'dd', 'listArea' => array())
);
//$array = array(array('id'=>0,'pid'=>0,'name' => '全国'));
//$array2 = array_merge($array, $arr);
//array_push($arr, $array);
//print_r($array);exit;
$tree = list_to_tree($arr);
echo json_encode($tree);
注意:不会显示没有子节点的对象
php 二维数组转换成树状数组(转)的更多相关文章
- 【BZOJ】1047: [HAOI2007]理想的正方形(单调队列/~二维rmq+树状数组套树状数组)
http://www.lydsy.com/JudgeOnline/problem.php?id=1047 树状数组套树状数组真心没用QAQ....首先它不能修改..而不修改的可以用单调队列做掉,而且更 ...
- 【BZOJ3196】二逼平衡树(树状数组,线段树)
[BZOJ3196]二逼平衡树(树状数组,线段树) 题面 BZOJ题面 题解 如果不存在区间修改操作: 搞一个权值线段树 区间第K大--->直接在线段树上二分 某个数第几大--->查询一下 ...
- BZOJ_3196_Tyvj 1730 二逼平衡树_树状数组套主席树
BZOJ_3196_Tyvj 1730 二逼平衡树_树状数组套主席树 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排 ...
- 【BZOJ-1452】Count 树状数组 套 树状数组
1452: [JSOI2009]Count Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1769 Solved: 1059[Submit][Stat ...
- 如何将PHP对象数组转换成普通数组
/** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...
- C# 之 将string数组转换到int数组并获取最大最小值
1.string 数组转换到 int 数组 " }; int[] output = Array.ConvertAll<string, int>(input, delegate(s ...
- 字符串集合或字符串数组转换成json数组
字符串可以是List<String>类型的字符串集合,也可以是String[]类型的字符串数组,二者转换成JSON数组的方式没有什么不同.下面代码注意关键的部分即可(画红线部分). 1. ...
- Python中如何将二维列表转换成一维列表
已知:a = [(4,2,3), (5, 9, 1), (7,8,9)]希望将二维列表转换成一维列表:["4,2,3", "5, 9, 1", "7, ...
- 将二维数组转换成一维数组(基于reduce)
reduce:不改变原数组,返回一个新的数组.就是遍历数组元素,从头开始,依次往下,第一个参数是上一次的返回值,第二个参数是下一个数组元素,首次的时候第一个和第二个参数分别是 array[0], a ...
随机推荐
- bom type:Phantom
bom的类型 'type': fields.selection([('normal','Normal BoM'),('phantom','Sets / Phantom')], 'BoM Type', ...
- 长期支持版本(即不自动更新版本) - Flash Player 18.0.0.268
无意中发现,适合不喜欢折腾的朋友. 下载链接:(官方:http://www.adobe.com/cn/products/flashplayer/distribution3.html) (分流:http ...
- App适配iPhone 6/ Plus和iOS 8:10条小秘诀
App适配iPhone 6/ Plus和iOS 8:10条小秘诀 iPhone 6iOS 8适配 (原文:raywenderlich 作者:Jack Wu 译者:@TurtleFromMars ...
- mysql oracle 删除外键约束
mysql alter table xxx drop foreign key xxx cascade; oracle alter table drop constraint xxxxx cascade ...
- .NET EntityFramework
http://www.cnblogs.com/lsxqw2004/archive/2009/05/31/1495240.html http://www.cnblogs.com/flowwind/p/3 ...
- All in All
Crawling in process... Crawling failed Description You have devised a new encryption technique which ...
- vsphere 出现“在主机的当前连接状况下不允许执行该操作”
问题: 登录vsphere client启动虚拟机出现“在主机的当前连接状况下不允许执行该操作” 解决方法: 1.选择主机->右键->断开 2.选择主机->右键->连接 3.在 ...
- etErrorMode(SEM_NOGPFAULTERRORBOX); 去除错误对话框.
etErrorMode(SEM_NOGPFAULTERRORBOX); 去除错误对话框. http://www.cnblogs.com/-clq/archive/2012/01/22/2328783 ...
- NtQuerySystemInformation的使用(提供50余种信息)
今天,我们主要讨论的是一个函数NtQuerySystemInformation(ZwQuerySystemInformation).当然,你不要小看这么一个函数,它却为我们提供了丰富的系统信息,同时还 ...
- Yii框架 多数据库、主从、读写分离
Yii是可以在配置文件里声明多个数据库连接,然后通过Yii::app()->db1,Yii::app()->db2...来访问它们,并且也实现了更高级(自动)的主从数据库功能. 最近因为一 ...