- Output for 8.1.0 - 8.1.31, 8.2.0 - 8.2.27, 8.3.0 - 8.3.16, 8.4.1 - 8.4.2
- 9 helloOK: inside else OK: inside else hello world
<?php
declare(strict_types=1); // print() ignores strict_types...
print (1 + 2) * 3;
// outputs "9"; the parentheses cause 1+2 to be evaluated first, then 3*3
// the print statement sees the whole expression as one argument
// As for the type mismatch? the strict_types ? ignored..
echo "\n";
if ( print("hello") and false ) {
print "WTF: inside if";
} else {
print "OK: inside else";
}
echo "\n";
if ( 1 && false ) {
print "WTF: inside if";
} else {
print "OK: inside else";
}
echo "\n";
print "hello " and print "world";
// outputs "world1"; ... WTF?
echo "\n";
ob_start();
print "hello " and print "world";
$str = ob_get_clean();
assert(str_contains($str, 'hello'));