Replies: 3 comments
-
In the
Reference: https://www.php.net/manual/en/random-randomizer.pickarraykeys.php It is not clear within the docs, but from my testing, the returned array seems always sorted. Maybe that hast to be on the enforcing unique/distinct array keys. So, when the number of random array keys requested is equal to the number of elements of an array, one ends up getting the same elements in the same order. If you test with a 4-element array, and request 3 elements, you will see that you will get 33 different elements back. Even though, they will appear in the same order as in the original array. It seems "random" means random picks, not random order. So when the picks' size equals the sample's size, you end up with the same sample. I agree that is unexpected, and odd. But I wouldn't blame Laravel on this. The As a workaround, you can call Or propose a PR to shuffle the keys after |
Beta Was this translation helpful? Give feedback.
-
Agreed, it's not technically a bug due to how the function works: pick a random selection of X elements. But, I can see a benefit in shuffling the picked elements too, and that this behaviour might not be expected or even desired here. You could PR a fix and see what sort of feedback that gets? |
Beta Was this translation helpful? Give feedback.
-
I initially encountered this issue in an older version of laravel, v10.48.23. There the function uses array_rand and there the documentation explicitly states: "If multiple keys are returned, they will be returned in the order they were present in the original array" which is the reason the values have the same order as well. |
Beta Was this translation helpful? Give feedback.
-
Laravel Version
11.33.2
PHP Version
8.2.24
Database Driver & Version
No response
Description
I noticed that the method
\Illuminate\Support\Arr::random()
always returns elements in exactly the same order as in the source array if called with$number
greater than 1. This seems highly counterintuitive, even wrong to me. I would expect an array with the specified number of random items, in random order. Is my expectiation way off or is this indeed a bug?Steps To Reproduce
Beta Was this translation helpful? Give feedback.
All reactions