3v4l.org

run code in 300+ PHP versions simultaneously
<?php function after($subject, $search) { return $search === '' ? $subject : array_reverse(explode($search, $subject, 2))[0]; } function before($subject, $search) { if ($search === '') { return $subject; } $result = strstr($subject, (string) $search, true); return $result === false ? $subject : $result; } function foo($databaseEngine, $databaseVersion) { if (($databaseEngine === 'mysql' && ( (! strpos($databaseVersion, 'MariaDB') && version_compare($databaseVersion, '8.0.1', '>=')) || (strpos($databaseVersion, 'MariaDB') && version_compare(before(after($databaseVersion, '5.5.5-'), '-'), '10.6.0', '>=')) )) || ($databaseEngine === 'pgsql' && version_compare($databaseVersion, '9.5', '>=')) ) { return 'FOR UPDATE SKIP LOCKED'; } return true; } var_dump(foo('mysql', '5.5.5-10.6.4-MariaDB')); var_dump(foo('mysql', '5.5.5-10.3.4-MariaDB')); var_dump(foo('mysql', '5.5.5-10.6.4-MariaDB-log')); var_dump(foo('mysql', '10.3.31-MariaDB-log - MariaDB Server')); var_dump(foo('mysql', '10.6.4-MariaDB-log - MariaDB Server')); var_dump(foo('mysql', '10.3.31-MariaDB-log-cll-lve - MariaDB Server')); var_dump(foo('mysql', '5.5.5-10.6.4-MariaDB-1:10.6.4+maria~focal')); var_dump(foo('mysql', '5.5.5-10.3.4-MariaDB-1:10.3.4+maria~focal'));
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.4, 8.3.6 - 8.3.25, 8.4.1 - 8.4.12
string(22) "FOR UPDATE SKIP LOCKED" bool(true) string(22) "FOR UPDATE SKIP LOCKED" bool(true) string(22) "FOR UPDATE SKIP LOCKED" bool(true) string(22) "FOR UPDATE SKIP LOCKED" bool(true)
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 string(22) "FOR UPDATE SKIP LOCKED" bool(true) string(22) "FOR UPDATE SKIP LOCKED" bool(true) string(22) "FOR UPDATE SKIP LOCKED" bool(true) string(22) "FOR UPDATE SKIP LOCKED" bool(true)

preferences:
98.5 ms | 408 KiB | 5 Q