3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php $names = ['Adamelsini', 'Mark', 'Gonz', 'Tim']; $randomizer = function ($names) { if (1 === count($names) % 2) { $names[] = 'Pete'; } $pairs = []; $iteration = 0; while (count($names) > 0) { ++$iteration; if ($iteration > 10) break; $drawn = array_rand($names, 2); $pair = [$names[$drawn[0]], $names[$drawn[1]]]; unset($names[$drawn[0]], $names[$drawn[1]]); $pairs[] = $pair; } $result = "The PP randomizer has selected: \n"; foreach ($pairs as $p) { $result .= " -> {$p[0]} and {$p[1]}\n"; } return $result; }; echo $randomizer($names);
based on JLiCU
Output for 5.6.8, 5.6.21, 5.6.27, 5.6.30, 7.0.3 - 7.0.4, 7.0.7, 7.0.11, 7.0.15 - 7.0.16, 7.1.0, 7.1.7, 7.2.6
The PP randomizer has selected: -> Gonz and Tim -> Adamelsini and Mark
Output for 5.6.0, 5.6.2 - 5.6.3, 5.6.5, 5.6.7, 5.6.12, 5.6.16, 5.6.18, 5.6.24, 5.6.26, 5.6.28, 7.0.2, 7.0.8, 7.2.0
The PP randomizer has selected: -> Adamelsini and Tim -> Mark and Gonz
Output for 5.6.10, 5.6.19, 5.6.23, 5.6.25, 7.0.5 - 7.0.6, 7.0.12, 7.0.14, 7.1.1 - 7.1.2, 7.1.4, 7.1.6, 7.1.10
The PP randomizer has selected: -> Adamelsini and Gonz -> Mark and Tim
Output for 5.6.1, 5.6.13 - 5.6.14, 5.6.20, 5.6.22, 7.0.0, 7.0.9, 7.0.13, 7.0.19, 7.1.3, 7.1.5
The PP randomizer has selected: -> Adamelsini and Mark -> Gonz and Tim
Output for 5.6.4, 5.6.6, 5.6.9, 5.6.29, 7.0.1, 7.0.18, 7.0.20
The PP randomizer has selected: -> Mark and Gonz -> Adamelsini and Tim
Output for 5.6.11, 5.6.15, 5.6.17, 7.0.10, 7.0.17
The PP randomizer has selected: -> Mark and Tim -> Adamelsini and Gonz
Output for hhvm-3.15.4
The PP randomizer has selected: -> Gonz and Tim -> Mark and Adamelsini