(PHP 8 >= 8.2.0)
Random\Randomizer::pickArrayKeys — 选择随机数组键
均匀地从输入 array
中选择 num
个不同的数组键。
输入 array
的每个键都有相等的可能性被返回。
数组键的选择取决于输入 array
的内部结构。对于两个相等的输入数组和两个状态相同的 Random\Engine,返回的数组键可能不同,具体取决于输入数组的创建方式。
array
要选择其数组键的数组。
num
要返回的数组键数量;必须在 1
和 array
中元素数量之间。
包含 num
个不同 array
数组键的 array。
返回的 array 将是一个列表 (array_is_list())。它将是 array_keys() 返回的 array 的一个子集。
num
小于 1
或大于 array
中元素的数量,则会抛出 ValueError。
Random\Randomizer::$engine
的 Random\Engine::generate() 方法抛出的任何 Throwable。
示例 #1 Random\Randomizer::pickArrayKeys() 示例
<?php
$r = new \Random\Randomizer();
$fruits = [ 'red' => '🍎', 'green' => '🥝', 'yellow' => '🍌', 'pink' => '🍑', 'purple' => '🍇' ];
// 选择 2 个随机数组键:
echo "Keys: ", implode(', ', $r->pickArrayKeys($fruits, 2)), "\n";
// 再选择 3 个:
echo "Keys: ", implode(', ', $r->pickArrayKeys($fruits, 3)), "\n";
?>
上面的示例将输出类似于以下内容
Keys: yellow, purple Keys: red, green, yellow
示例 #2 选择随机值
<?php
$r = new \Random\Randomizer();
$fruits = [ 'red' => '🍎', 'green' => '🥝', 'yellow' => '🍌', 'pink' => '🍑', 'purple' => '🍇' ];
$keys = $r->pickArrayKeys($fruits, 2);
// 查找选定键的值。
$selection = array_map(
static fn ($key) => $fruits[$key],
$keys
);
echo "Values: ", implode(', ', $selection), "\n";
?>
上面的示例将输出类似于以下内容
Values: 🍎, 🍇