3v4l.org

run code in 500+ PHP versions simultaneously
<?php foreach ([ [0, 'a', 'a'], // from https://wiki.php.net/rfc/string_to_number_comparison [0, 0, '0'], [0, 0, '0.0'], [-1, 0, 'foo'], [1, 0, ''], [0, 42, ' 42'], [-1, 42, '42foo'], [0, '0', '0'], [0, '0', '0.0'], [-1, '0', 'foo'], [1, '0', ''], [0, '42', ' 42'], [-1, '42', '42foo'], [0, 42, '000042'], [0, 42, '42.0'], [0, 42.0, '+42.0E0'], [0, 0, '0e214987142012'], [0, '42', '000042'], [0, '42', '42.0'], [0, '42.0', '+42.0E0'], [0, '0', '0e214987142012'], [0, 42, ' 42'], [0, 42, '42 '], [-1, 42, '42abc'], [-1, 42, 'abc42'], [-1, 0, 'abc42'], [0, INF, 'INF'], [0, -INF, '-INF'], [0, INF, '1e1000'], [0, -INF, '-1e1000'], [-1, 10, 20], [-1, '10', 20], [-1, 10, '20'], ] as [$expected, $a, $b]) { $actual = $a <=> $b; if ($expected !== $actual) { echo var_export($a, true).' <=> '.var_export($b, true), PHP_EOL; echo 'Expected: '.var_export($expected, true), PHP_EOL; echo 'Actual: '.var_export($actual, true), PHP_EOL; echo PHP_EOL; } } echo 'Done.', PHP_EOL;
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.32, 8.3.0 - 8.3.32, 8.4.1 - 8.4.23, 8.5.0 - 8.5.8
Done.
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
0 <=> 'foo' Expected: -1 Actual: 0 0 <=> '' Expected: 1 Actual: 0 42 <=> '42foo' Expected: -1 Actual: 0 42 <=> '42abc' Expected: -1 Actual: 0 42 <=> 'abc42' Expected: -1 Actual: 1 0 <=> 'abc42' Expected: -1 Actual: 0 INF <=> 'INF' Expected: 0 Actual: 1 -INF <=> '-INF' Expected: 0 Actual: -1 Done.

preferences:
104.61 ms | 1542 KiB | 4 Q