Tuesday, 27 February 2018

php - 'AND' vs '&&' as operator



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?



Answer



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)

No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...