Rumah  >  Artikel  >  pembangunan bahagian belakang  >  把返回的数据集转换成数组树

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

WBOY
WBOYasal
2016-07-25 09:01:281356semak imbas

$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. }
复制代码


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn