‘AND’ vs ‘&&’ as operator

If you use AND and OR, you’ll eventually get tripped up by something like this:

$this = true;
$that = false;

$truthiness = $this and $that;

Want to guess what $truthiness equals?

If you said false… bzzzt, sorry, wrong!

$truthiness above has the value true. Why? = has a higher precedence than and. The addition of parentheses to show the implicit order makes this clearer:

($truthiness = $this) and $that

If you used && instead of and in the first code example, it would work as expected and be false.

As discussed in the comments below, this also works to get the correct value, as parentheses have higher precedence than =:

$truthiness = ($this and $that)

Leave a Reply

Your email address will not be published. Required fields are marked *