Shamelessly stolen from the PHP manual:
//us2.php.net/array_rand
Note that, as of PHP 5.2.10, you may want to shuffle [randomize] the keys that are returned via shuffle[$rand_keys]
, otherwise they will always be in order [smallest index first]. That is, in the above example, you could get "Neo, Trinity" but never "Trinity, Neo."
If the order of the random elements is not important, then the above code is sufficient.
[PHP 4, PHP 5, PHP 7, PHP 8]
array_rand — Pick one or more random keys out of an array
Description
array_rand[array $array
, int $num
= 1]: int|string|array
Parameters
array
The input array.
num
Specifies how many entries should be picked.
Return Values
When picking only one entry, array_rand[] returns the key for a random entry. Otherwise, an array of keys for the random entries is returned. This is done so that random keys can be
picked from the array as well as random values. If multiple keys are returned, they will be returned in the order they were present in the original array. Trying to pick more elements than there are in the array will result in an E_WARNING
level error, and NULL will be returned.
Changelog
7.1.0 | The internal randomization algorithm has been changed to use the » Mersenne Twister Random Number Generator instead of the libc rand function. |
Examples
Example #1 array_rand[] example
Anonymous ¶
12 years ago
If the array elements are unique, and are all integers or strings, here is a simple way to pick $n random *values* [not keys] from an array $array:
Anonymous ¶
10 years ago
It doesn't explicitly say it in the documentation, but PHP won't pick the same key twice in one call.
divinity76+spam at gmail dot com ¶
5 months ago
for a cryptographically secure version, try
[this is an improved version, which unlike the first version, avoids copying *all* the keys]
grzeniufication ¶
4 years ago