Ztrees.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2020/3/20
  6. * Time: 15:25
  7. */
  8. namespace app\admin\model;
  9. use think\facade\Db;
  10. class Ztrees
  11. {
  12. /**
  13. * 分级排序
  14. * @param $data
  15. * @param int $pid
  16. * @param string $field
  17. * @param string $pk
  18. * @param string $html
  19. * @param int $level
  20. * @param bool $clear
  21. * @return array
  22. */
  23. public static function sortListTier($data, $pid = 0, $field = 'pid', $pk = 'id', $html = '|-----', $level = 1, $clear = true)
  24. {
  25. static $list = [];
  26. if ($clear) $list = [];
  27. foreach ($data as $k => $res) {
  28. if ($res[$field] == $pid) {
  29. $res['html'] = str_repeat($html, $level);
  30. $res['level'] =$level;
  31. $list[] = $res;
  32. unset($data[$k]);
  33. self::sortListTier($data, $res[$pk], $field, $pk, $html, $level + 1, false);
  34. }
  35. }
  36. return $list;
  37. }
  38. public static function child_ztree($data,$pid=0,$field = 'pid',$level=1,$clear = true)
  39. {
  40. static $list = [];
  41. if ($clear) $list = [];
  42. foreach ($data as $k => $res) {
  43. if ($res[$field] == $pid) {
  44. $list["name"]=$res["name"];
  45. $list["city"]=$res["name"];
  46. unset($data[$k]);
  47. self::child_ztree($data, $res["id"], $field, $level + 1, false);
  48. }
  49. }
  50. return $list;
  51. }
  52. //无限分类数
  53. /** 无限分类
  54. * @param $array 分类数据
  55. * @param string $pid 分类上级变量
  56. * @param string $child 下一级变量名称
  57. * @return array
  58. */
  59. public static function SelectSon($array,$pid="pid",$child="son"){
  60. $items = array();
  61. foreach ($array as $value) {
  62. $items[$value['id']] = $value;
  63. }
  64. $tree = array();
  65. foreach ($items as $key => $item) {
  66. if (isset($items[$item[$pid]])) {
  67. $items[$item[$pid]][$child][] = &$items[$key];
  68. } else {
  69. $tree[$item[$pid]] = &$items[$key];
  70. }
  71. }
  72. return $tree;
  73. }
  74. }