What will this code output and why?
$x = true and false; var_dump($x);
Surprisingly to many, the above code will output
bool(true) seeming to imply that the
and operator is behaving instead as an
The issue here is that the
= operator takes precedence over the
and operator in order of operations, so the statement
$x = true and false ends up being functionally equivalent to:
$x = true; // sets $x equal to true true and false; // results in false, but has no affect on anything
This is, incidentally, a great example of why using parentheses to clearly specify your intent is generally a good practice, in any language. For example, if the above statement
$x = true and false were replaced with
$x = (true and false), then
$x would be set to
false as expected.