对于非常基本的问题,我很抱歉,但我一周前才开始学习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我读过&/也是一样的。两人的结果有何不同?谁能说出真正的原因吗?
发布于 2012-09-04 17:30:02
原因是operator precedence。在您使用&&、and和=的三个操作符中,优先级顺序是
&&=and因此,程序中的$a按预期计算,但对于$b,首先计算了语句$b = isset($one),给出了意想不到的结果。它可以按以下方式固定。
$b = (isset($one) and isset($two));发布于 2012-09-04 17:31:06
操作符的分组就是这样进行的。
$one = true;
$two = null;
$a = (isset($one) && isset($two));
($b = isset($one)) and isset($two);
echo $a.'<br>';
echo $b;这就是为什么第一次返回为假,第二次返回为真。
发布于 2012-09-04 17:30:03
请参阅:http://www.php.net/manual/en/language.operators.logical.php
它解释了"and“与”&“是不同的,因为操作的顺序是不同的。在这种情况下,首先要分配任务。所以如果你要做:
$b = (isset($one) and isset($two));你最终会得到预期的结果。
https://stackoverflow.com/questions/12268487
复制相似问题