array_rand

(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

Picks one or more random entries out of an array, and returns the key (or keys) of the random entries.

Caution

This function does not generate cryptographically secure values, and must not be used for cryptographic purposes, or purposes that require returned values to be unguessable.

If cryptographically secure randomness is required, the Random\Randomizer may be used with the Random\Engine\Secure engine. For simple use cases, the random_int() and random_bytes() functions provide a convenient and secure API that is backed by the operating system’s CSPRNG.

Parameters

array

The input array. Cannot be empty.

num

Specifies how many entries should be picked. Must be greater than zero, and less than or equal to the length of array

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.

Errors/Exceptions

Throws a ValueError if array is empty, or if num is out of range.

Changelog

Version Description
8.0.0 array_rand() now throws a ValueError if num is out of range; previously an E_WARNING was raised, and the function returned null.
8.0.0 array_rand() now throws a ValueError if array is empty; previously an E_WARNING was raised, and the function returned null.
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

<?php
$input
= array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo
$input[$rand_keys[0]] . "\n";
echo
$input[$rand_keys[1]] . "\n";
?>

See Also

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top