Tree.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: NODELOG
  5. * Date: 16/7/16
  6. * Time: 下午7:51
  7. */
  8. namespace common\helpers;
  9. class Tree
  10. {
  11. /**
  12. * 把数据集转换成Tree
  13. * @param $list
  14. * @param string $pk
  15. * @param string $pid
  16. * @param string $child
  17. * @param int $root
  18. * @return array
  19. */
  20. public static function build($list, $pk='id', $pid = 'pid', $child = 'children', $root = 0) {
  21. // 创建Tree
  22. $tree = array();
  23. if(is_array($list)) {
  24. // 创建基于主键的数组引用
  25. $refer = array();
  26. foreach ($list as $key => $data) {
  27. $refer[$data[$pk]] =& $list[$key];
  28. }
  29. foreach ($list as $key => $data) {
  30. // 判断是否存在parent
  31. $parentId = $data[$pid];
  32. if ($root == $parentId) {
  33. $tree[] =& $list[$key];
  34. }else{
  35. if (isset($refer[$parentId])) {
  36. $parent =& $refer[$parentId];
  37. $parent[$child][] =& $list[$key];
  38. }
  39. }
  40. }
  41. }
  42. return $tree;
  43. }
  44. }