3v4l.org

run code in 300+ PHP versions simultaneously
<?php $haystack = [-6, 0, 5, 10, 11, 12, 20]; $needles = [0, 3, 14, -3]; function getNearest($needle, $haystack) { if (!$haystack) { throw new Exception('empty haystack'); } $bestDistance = PHP_INT_MAX; foreach ($haystack as $value) { if ($value === $needle) { return $needle; } $distance = abs($value - $needle); if ($distance < $bestDistance) { $bestDistance = $distance; $keep = $value; } } return $keep ?? $value; // coalesc to silence potential IDE complaint } foreach ($needles as $needle) { // each test case echo "$needle -> " . getNearest($needle, $haystack) . "\n"; }
Output for 7.3.13 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.31, 8.2.0 - 8.2.27, 8.3.0 - 8.3.4, 8.3.6 - 8.3.18, 8.4.1 - 8.4.5
0 -> 0 3 -> 5 14 -> 12 -3 -> -6
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 0 -> 0 3 -> 5 14 -> 12 -3 -> -6

preferences:
27.29 ms | 412 KiB | 5 Q