<?php
function array_rand_cryptographically_secure(array $array): int|string {
$max = count($array) - 1;
if ($max < 0) {
throw new ValueError ('Argument #1 ($array) cannot be empty');
}
return key(array_slice($array, random_int(0, $max), 1, true));
}
$tests = [
[5, 6, 7],
['a' => 1, 'b' => 2, 'c' => 3],
['zero', 4 => 'four', 9 => 'nine']
];
foreach ($tests as $test) {
echo array_rand_cryptographically_secure($test) . "\n";
}
preferences:
35.02 ms | 402 KiB | 5 Q