3v4l.org

run code in 300+ PHP versions simultaneously
<?php function getKey($current, $step): int { $keys = [1,2,3,4,5,6,7]; $currentKey = array_search($current, $keys); $size = count($keys); // normalize step offset $step = ($step % $size) + $size; // ^-----------^ ^-----^ // │ └ move possible negative to positive // └ get a value from -7 to +7 // add offset for current key $newKey = ($currentKey + $step) % $size; // ^-----------------^ ^-----^ // │ └ wrap around in case we exceed $size // └ add normalized step offset to new element to current return $keys[$newKey]; } // Tests echo getKey(1,-1) . PHP_EOL; echo getKey(3,1) . PHP_EOL; echo getKey(7,1) . PHP_EOL; echo getKey(7,15) . PHP_EOL; // same as +1 echo getKey(1,-8) . PHP_EOL; // same as -1 echo getKey(1,-15) . PHP_EOL; // same as -1
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
7 4 1 1 7 7
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 7 4 1 1 7 7

preferences:
191.83 ms | 402 KiB | 181 Q