'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?


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)

Depending on how it's being used, it might be necessary and even handy. http://php.net/manual/en/language.operators.logical.php

// "||" has a greater precedence than "or"

// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;

// The constant false is assigned to $f and then true is ignored
// Acts like: (($f = false) or true)
$f = false or true;

But in most cases it seems like more of a developer taste thing, like every occurrence of this that I've seen in CodeIgniter framework like @Sarfraz has mentioned.


由于and优先级低于=您可以在条件分配中使用它:

if ($var = true && false) // Compare true with false and assign to $var
if ($var = true and false) // Assign true to $var and compare $var to false
链接地址: http://www.djcxy.com/p/1718.html

上一篇: 和/或关键字

下一篇: 'AND'和'&&'作为运算符