I have a codebase where developers decided to use AND
and OR
instead of &&
and ||
.
I know that there is a difference in operators' precedence (&&
goes before and
), but with the given framework (PrestaShop to be precise) it is clearly not a reason.
Which version are you using? Is and
more readable than &&
? Or is there no difference?
If you use AND
and OR
, you'll eventually get tripped up by something like this:
$this_one = true;
$that = false;
$truthiness = $this_one 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_one) 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_one and $that)