ArrayUtil.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace app\utils;
  3. class ArrayUtil
  4. {
  5. /**
  6. * 将数组内的 keys下划线转驼峰
  7. *
  8. * @param array $arr
  9. * @param string $separator
  10. *
  11. * @return array
  12. */
  13. public static function underline2CamelArr(array $arr, string $separator = '_'): array
  14. {
  15. $result = [];
  16. if (!empty($arr)) {
  17. foreach ($arr as $words => $value) {
  18. if (strpos($words, $separator) !== false) {
  19. $words = $separator . str_replace($separator, " ", strtolower($words));
  20. $result[ltrim(str_replace(" ", "", ucwords($words)), $separator)] = $value;
  21. } else {
  22. $result[$words] = $value;
  23. }
  24. }
  25. }
  26. return $result;
  27. }
  28. /**
  29. * 根据 code 获取 name
  30. * @param $code
  31. * @param array $data
  32. * @return mixed|null
  33. */
  34. public static function getEnumNameByCode($code, array $data = [])
  35. {
  36. foreach ($data as $datum) {
  37. if (isset($datum['code']) && isset($datum['name']) && $datum['code'] === $code) {
  38. return $datum['name'];
  39. }
  40. }
  41. return null;
  42. }
  43. /**
  44. * 获取数组维度 几维数组
  45. * @param $array
  46. * @return int
  47. */
  48. public static function array_depth($array): int
  49. {
  50. if (!is_array($array)) return 0;
  51. $max_depth = 1;
  52. foreach ($array as $value) {
  53. if (is_array($value)) {
  54. $depth = self::array_depth($value) + 1;
  55. if ($depth > $max_depth) {
  56. $max_depth = $depth;
  57. }
  58. }
  59. }
  60. return $max_depth;
  61. }
  62. }