Select random array keys

# Random\Randomizer::pickArrayKeys

(PHP 8 >= 8.2.0)

Random\Randomizer::pickArrayKeys — Select random array keys

### 说明

public function 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.

警告

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.

### 参数

`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`.

### 返回值

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().

### 错误／异常

- If `num` is less than `1` or greater than the number of elements in `array`, a ValueError will be thrown.
- 底层 `Random\Randomizer::$engine` 的 Random\Engine::generate() 方法抛出的任何 Throwable。

### 示例

示例 #1 Random\Randomizer::pickArrayKeys() example

    <?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";
    ?>

以上示例的输出类似于：

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

示例 #2 Picking random values

    <?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";
    ?>

以上示例的输出类似于：

    Values: 🍎, 🍇

### 参见

- array_keys() - 返回数组中部分的或所有的键名

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open