|
6 | 6 | use ArrayAccess;
|
7 | 7 | use Illuminate\Support\Traits\Macroable;
|
8 | 8 | use InvalidArgumentException;
|
| 9 | +use Random\Randomizer; |
9 | 10 |
|
10 | 11 | class Arr
|
11 | 12 | {
|
@@ -661,24 +662,24 @@ public static function random($array, $number = null, $preserveKeys = false)
|
661 | 662 | );
|
662 | 663 | }
|
663 | 664 |
|
664 |
| - if (is_null($number)) { |
665 |
| - return $array[array_rand($array)]; |
| 665 | + if (empty($array) || (! is_null($number) && $number <= 0)) { |
| 666 | + return is_null($number) ? null : []; |
666 | 667 | }
|
667 | 668 |
|
668 |
| - if ((int) $number === 0) { |
669 |
| - return []; |
670 |
| - } |
| 669 | + $keys = (new Randomizer)->pickArrayKeys($array, $requested); |
671 | 670 |
|
672 |
| - $keys = array_rand($array, $number); |
| 671 | + if (is_null($number)) { |
| 672 | + return $array[$keys[0]]; |
| 673 | + } |
673 | 674 |
|
674 | 675 | $results = [];
|
675 | 676 |
|
676 | 677 | if ($preserveKeys) {
|
677 |
| - foreach ((array) $keys as $key) { |
| 678 | + foreach ($keys as $key) { |
678 | 679 | $results[$key] = $array[$key];
|
679 | 680 | }
|
680 | 681 | } else {
|
681 |
| - foreach ((array) $keys as $key) { |
| 682 | + foreach ($keys as $key) { |
682 | 683 | $results[] = $array[$key];
|
683 | 684 | }
|
684 | 685 | }
|
@@ -730,20 +731,11 @@ public static function set(&$array, $key, $value)
|
730 | 731 | * Shuffle the given array and return the result.
|
731 | 732 | *
|
732 | 733 | * @param array $array
|
733 |
| - * @param int|null $seed |
734 | 734 | * @return array
|
735 | 735 | */
|
736 |
| - public static function shuffle($array, $seed = null) |
| 736 | + public static function shuffle($array) |
737 | 737 | {
|
738 |
| - if (is_null($seed)) { |
739 |
| - shuffle($array); |
740 |
| - } else { |
741 |
| - mt_srand($seed); |
742 |
| - shuffle($array); |
743 |
| - mt_srand(); |
744 |
| - } |
745 |
| - |
746 |
| - return $array; |
| 738 | + return (new Randomizer)->shuffleArray($array); |
747 | 739 | }
|
748 | 740 |
|
749 | 741 | /**
|
|
0 commit comments