(PHP 8 >= 8.2.0)
Random\Randomizer::pickArrayKeys — 选择随机数组键
均匀地选择输入array
的num
个不同的数组键。
输入array
的每个键被返回的概率相同。
数组键的选择取决于输入array
的内部结构。对于两个相等的输入数组和两个具有相同状态的Random\Engine,返回的数组键可能不同,这取决于输入数组是如何创建的。
array
选择数组键的数组。
num
要返回的数组键的数量;必须在1
和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: 🍎, 🍇