可能重复:
';和';vs'&';作为操作员
很抱歉有一个非常基本的问题,但我一周前才开始学习PHP;在google/stackoverflow上找不到这个问题的答案。
我完成了以下程序:
$one = true;
$two = null;
$a = isset($one) && isset($two);
$b = isset($one) and isset($two);
echo $a.'<br>';
echo $b;
其输出为:
false
true
我阅读&/并且是相同的。他们两人的结果有何不同?有人能说出真正的原因吗?
原因是运算符优先级。在使用&&
、and
&=
,优先顺序为
&&
=
and
所以程序中的$a
是按预期计算的,但对于$b
,语句$b = isset($one)
是先计算的,给出了意外的结果。可以按如下方式进行修复。
$b = (isset($one) and isset($two));
这就是对操作员进行分组的方式
$one = true;
$two = null;
$a = (isset($one) && isset($two));
($b = isset($one)) and isset($two);
echo $a.'<br>';
echo $b;
这就是为什么它第一次返回false,第二次返回true。
请参阅:http://www.php.net/manual/en/language.operators.logical.php
它解释说,"answers"与"&&"的不同之处在于操作的顺序不同。在这种情况下,分配首先发生。所以,如果你要做:
$b = (isset($one) and isset($two));
你最终会得到预期的结果。