php8.5
Home/ Manual/ random / randomizer/ Random\Randomizer::pickArrayKeys

Random\Randomizer::pickArrayKeys

PHP function Edit on GitHub ✎

(PHP 8 >= 8.2.0)

Select random array keys

Description

Random\Randomizer::pickArrayKeys(array $array, int $num): array

Uniformly selects num distinct array keys of the input array.

Each key of the input array is equally likely to be returned.

Caution

The selection of the array keys depends on the internal structure of the input array. The returned array keys might be different for two equal input arrays and two Random\Engines with identical state, depending on how the input arrays have been created.

Parameters

array

The array whose array keys are selected.

num

The number of array keys to return; must be between 1 and the number of elements in array.

Return Values

An Array containing num distinct array keys of array.

The returned Array will be a list (array_is_list()). It will be a subset of the Array returned by array_keys().

Errors/Exceptions

  • If num is less than 1 or greater than the number of elements in array, a ValueError will be thrown.

Examples

Random\Randomizer::pickArrayKeys() example

php
<?php
$r = new \Random\Randomizer();

$fruits = [ 'red' => '🍎', 'green' => '🥝', 'yellow' => '🍌', 'pink' => '🍑', 'purple' => '🍇' ];

// Pick 2 random array keys:
echo "Keys: ", implode(', ', $r->pickArrayKeys($fruits, 2)), "\n";

// Pick another 3:
echo "Keys: ", implode(', ', $r->pickArrayKeys($fruits, 3)), "\n";
?>

The above example will output something similar to:

output
Keys: yellow, purple
Keys: red, green, yellow

Picking random values

php
<?php
$r = new \Random\Randomizer();

$fruits = [ 'red' => '🍎', 'green' => '🥝', 'yellow' => '🍌', 'pink' => '🍑', 'purple' => '🍇' ];

$keys = $r->pickArrayKeys($fruits, 2);
// Look up the values for the picked keys.
$selection = array_map(
    static fn ($key) => $fruits[$key],
    $keys
);

echo "Values: ", implode(', ', $selection), "\n";
?>

The above example will output something similar to:

output
Values: 🍎, 🍇

See Also

Source: reference/random/random/randomizer/pickarraykeys.xml · from the official PHP manual (php/doc-en)