Arrays.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace Songshenzong\Support;
  3. use InvalidArgumentException;
  4. /**
  5. * Class Arrays
  6. *
  7. * @package Songshenzong\Support
  8. */
  9. class Arrays
  10. {
  11. /**
  12. * @param array $arrays
  13. *
  14. * @return array
  15. */
  16. public static function merge(array $arrays)
  17. {
  18. $result = [];
  19. foreach ($arrays as $array) {
  20. foreach ($array as $key => $value) {
  21. if (is_int($key)) {
  22. $result[] = $value;
  23. continue;
  24. }
  25. if (isset($result[$key]) && is_array($result[$key])) {
  26. $result[$key] = self::merge(
  27. [$result[$key], $value]
  28. );
  29. continue;
  30. }
  31. $result[$key] = $value;
  32. }
  33. }
  34. return $result;
  35. }
  36. /**
  37. * Returns item from array or $default if item is not set.
  38. *
  39. * @param array $array
  40. * @param string|int|array $key one or more keys
  41. * @param null $default
  42. *
  43. * @return mixed
  44. */
  45. public static function get(array $array, $key, $default = null)
  46. {
  47. foreach (is_array($key) ? $key : [$key] as $k) {
  48. if (is_array($array) && array_key_exists($k, $array)) {
  49. $array = $array[$k];
  50. } else {
  51. if (func_num_args() < 3) {
  52. throw new InvalidArgumentException("Missing item '$k'.");
  53. }
  54. return $default;
  55. }
  56. }
  57. return $array;
  58. }
  59. /**
  60. * @param array $system_version
  61. */
  62. public static function versionCompare(array &$system_version)
  63. {
  64. for ($i = 0; $i < count($system_version) - 1; $i++) {
  65. for ($j = 0; $j < count($system_version) - 1 - $i; $j++) {
  66. if (version_compare($system_version[$j], $system_version[$j + 1], '<')) {
  67. $tmp = $system_version[$j];
  68. $system_version[$j] = $system_version[$j + 1];
  69. $system_version[$j + 1] = $tmp;
  70. }
  71. }
  72. }
  73. }
  74. }