3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(0); function testBinaryOperators() { $asserts = [ INativeType::TYPE_INT => [ function () { (false || $a) instanceof $a; }, function () { 1 + 1; }, function () { 1 - 1; }, function () { 1 * 1; }, function () { 1 & 1; }, function () { '' & 1; }, function () { 1 | 1; }, function () { '' | 1; }, function () { 1 << 1; }, function () { 1.0 << 1; }, function () { 1 >> 1; }, function () { 1 >> 1.0; }, function () { 1 ^ 1; }, function () { 1 ^ 1.0; }, function () { 1.0 ^ 1.0; }, ], INativeType::TYPE_DOUBLE => [ function () { 1 + 1.0; }, function () { 1.0 + 1; }, function () { 1.0 + 1.0; }, function () { 1 - 1.0; }, function () { 1.0 - 1; }, function () { 1.0 - 1.0; }, function () { 1 * 1.0; }, function () { 1.0 * 1; }, function () { 1.0 * 1.0; }, function () { 3.4 / 24; }, function () { 34 / 2.4; }, function () { 3.4 / 2.34; }, ], INativeType::TYPE_BOOL => [ function () { 1 && 1.0; }, function () { 1 && 0; }, function () { true && 0; }, function () { 0 && true; }, function () { false && true; }, function () { '' && true; }, function () { false && ''; }, function () { 2.3 && true; }, function () { false && 2.1; }, function () { [] && true; }, function () { false && [1,2]; }, function () { 1 || 1.0; }, function () { 1 || 0; }, function () { true || 0; }, function () { 0 || true; }, function () { false || true; }, function () { '' || true; }, function () { false || ''; }, function () { 2.3 || true; }, function () { false || 2.1; }, function () { [] || true; }, function () { false || [1,2]; }, function () { 3 < 3; }, function () { 3 < 3.0; }, function () { 3 < '3'; }, function () { 3 <= 3; }, function () { 3 <= '3'; }, function () { 3.0 <= 3; }, function () { 3 > 3; }, function () { 3.0 > 3; }, function () { 3 > '3'; }, function () { 3 > 3.0; }, function () { 3.0 >= 3; }, function () { 3 >= 3.0; }, function () { 3 >= '3'; }, ], INativeType::TYPE_ARRAY => [ function () { [] + [1,2]; }, function () { [] + [1,2,3] + [2] + ['abc']; }, ], INativeType::TYPE_STRING => [ function () { 'abc' . '123'; }, function () { 'abc' . 123; }, function () { 'abc' . 123.42; }, function () { 123 . 'ab'; }, function () { 123.42 . 'a'; }, function () { 2 . 3.45; }, function () { false . ''; }, function () { '' . true; }, function () { false . true; }, function () { false . 3.2; }, function () { 3 . 9; }, ], INativeType::TYPE_MIXED => [ function () { '123' + 1; }, function () { '123' - 1; }, function () { '123' * 1; }, function () { '123' + 1; }, function () { 3 + 'av1'; }, function () { 3 - 'av1'; }, function () { 3 * 'av1'; }, @function () { 3 / ('av1' . $a); }, @function () { 'as' + 'av1'; }, function () { 1 / 2; }, function () { 1 / 1; }, function () { '123' / 24; }, ], ]; foreach($asserts as $expectedType => $expressions) { foreach($expressions as $expression) { $this->assertReturnsNativeType($expression, $expectedType); } } }
Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 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
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

preferences:
273.36 ms | 401 KiB | 373 Q