Get n random elements from array php

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_randPick 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

VersionDescription
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

Chủ Đề