用bool表达式在PHP中分配:奇怪的行为
这个问题在这里已经有了答案:
经过一番搜索后,我发现这是由PHP中的运算符优先级引起的。 '='运算符比'和'更强。
如果你想得到预期的结果,你必须使用大括号:
$x = (true and false); //correct: $x is false now!
  没有大括号的表达式等于($x = true) and false;  。  $ x将获得'真正'的价值。  之后,PHP解释器用$ x刚刚获得的值“替换”此赋值。  如此true and false;  遗迹。  而这没有任何作用。  '假'丢失,并没有影响表达。 
请注意,如果使用'&&'或'||',则不需要大括号! 它们比“=”更强,因此比“和”和“或”更强。 奇怪...
  这与例如$x = 5 + 6;  因为这里的'+'比'='强,它会先解决。  最后,它只影响布尔运算符'和','或'和'xor'。  只有与他们在一起,你必须小心。 
还要注意,与JavaScript或Java等其他语言相比,这是不同的。 在这些语言中,不需要大括号,因为逻辑运算符比等号运算符(JavaScript中的运算符,Java中的运算符)更强大。
更多关于这个:
$x = true and false;
  所以我们有以下几点。  如果你猜测$x是真的,你会是对的。  由于=具有比较高的先例and 。 
重写上面的表达式将等于:
 ($x = true) and false;
这是它变得有趣的地方。
如果你这样做:
 $x = true && false;
  你会猜测$x是真的,你会错的。  在这种情况下$x实际上是错误的。 
上述表达式实际上等于:
$x = (true and false);
  为什么?  由于&&比更高的先例and 。 
上一篇: Assignment in PHP with bool expression: strange behaviour
