逻辑运算符&&;和';和';在php中是相同的


logical operators - && and 'and' are the same in php?

我尝试了以下代码,得到了&amp是不同的。

<?php
$keyWord =  2 and 3>4;
$symbol  =  2 &&  3>4;
echo $keyWord===$symbol ? 'equal' : 'not-equal';

输出:不等于

为什么?

它们没有相同的优先级。完全插入括号,您的代码为:

($keyWord = 2) and (3>4); // $keyWord = 2
$symbol = (2 && (3>4)); // $symbol = false

2false显然不相同,因此'not-equal'

更多关于操作员优先级的

好吧,将代码稍微修改为:

<?php
$keyWord =  2 and 3>4;
$symbol  =  2 &&  3>4;
var_dump($keyWord);
var_dump($symbol);
?>

产生的输出为:

int(2) bool(false)

正如Kolink在上面指出的,这是由于运算符的优先级。

以下是逻辑运算符(表的一部分)的优先级

left    &&  logical
left    ||  logical
left    ? :     ternary
right   = += -= *= /= .= %= &= |= ^= <<= >>= =>     assignment
left    and

在您的情况下:

case 1:
$keyWord =  2 and 3>4;
($keyWord =  2) and (3>4);

此处为$keyWord = 2

case 2:
$symbol  =  2 &&  3>4;
$symbol  =  (2 && (3>4));

此处$symbol = false

解决方案$keyWord = (2 and (3>4));$symbol = 2 && (3>4);使用括号

参考编号:http://php.net/manual/en/language.operators.precedence.php