把返回的数据集转换成数组树
如
$old = array(
array('id'=>1,'pid'=>0,'name'=>'第一个' ),
array('id'=>2,'pid'=>1,'name'=>'第二个' ) ,
array('id'=>3,'pid'=>2,'name'=>'第三个'),
);
print_r(list_to_tree($old,'id','pid','_child'));
输出如下
$old = array(
array(
'id'=>1,
'pid'=>0,
'name'=>'第一个',
'_child'=>array(
'id'=>2,
'pid'=>1,
'name'=>'第二个'
'_child'=>array('id'=>3,'pid'=>2,'name'=>'第三个'),
),
) ,
);
标签: CorePHP
代码片段(1)
[代码] 把返回的数据集转换成数组树
01 /**
02 * 把返回的数据集转换成Tree
03 * @access public
04 * @param array $list 要转换的数据集
05 * @param string $pid parent标记字段
06 * @param string $level level标记字段
07 * @return array
08 */
09 function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) {
10 // 创建Tree
11 $tree = array();
12 if(is_array($list)) {
13 // 创建基于主键的数组引用
14 $refer = array();
15 foreach ($list as $key => $data) {
16 $refer[$data[$pk]] =& $list[$key];
17 }
18 foreach ($list as $key => $data) {
19 // 判断是否存在parent
20 $parentId = $data[$pid];
21 if ($root == $parentId) {
22 $tree[] =& $list[$key];
23 }else{
24 if (isset($refer[$parentId])) {
25 $parent =& $refer[$parentId];
26 $parent[$child][] =& $list[$key];
27 }
28 }
29 }
30 }
31 return $tree;
32 }