3v4l.org

run code in 300+ PHP versions simultaneously
<?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'); } if (function_exists('array_is_list') && array_is_list($array)) { // optimization, this avoids creating a copy of all the keys return random_int(0, $max); } return array_keys($array)[random_int(0, $max)]; } $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"; }
Output for 8.0.13, 8.1.5
0 c 0
Output for 8.1.4
1 b 4
Output for 8.1.3
0 c 4
Output for 8.0.2, 8.1.1 - 8.1.2
1 b 0
Output for 8.0.17, 8.1.0
1 c 0
Output for 8.0.3, 8.0.9, 8.0.18
2 a 9
Output for 8.0.16
2 c 0
Output for 8.0.15
2 b 4
Output for 8.0.14
1 c 9
Output for 8.0.6, 8.0.12
2 c 4
Output for 8.0.11
0 b 0
Output for 8.0.10
0 b 4
Output for 8.0.8
0 c 9
Output for 8.0.7
1 a 9
Output for 8.0.5
1 c 4
Output for 8.0.1
0 a 0
Output for 7.4.0 - 7.4.29
Parse error: syntax error, unexpected '|', expecting '{' in /in/VK1pF on line 3
Process exited with code 255.

preferences:
81.59 ms | 401 KiB | 57 Q