把返回的数据集转换成数组树

WBOY
发布: 2016-07-25 09:01:28
原创
1400 人浏览过

$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'=>'第三个'),
),
) ,

);
  1. /**
  2. * 把返回的数据集转换成Tree
  3. * @access public
  4. * @param array $list 要转换的数据集
  5. * @param string $pid parent标记字段
  6. * @param string $level level标记字段
  7. * @return array
  8. */
  9. 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. }
复制代码


来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板