PHP运算符差异&&和“和”

时间:2012-09-04 17:26:34

标签: php

  

可能重复:
  'AND' vs '&&' as operator

很抱歉非常基本的问题,但我在一周前开始学习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

我读&amp;&amp; /并且是相同的。两者的结果有何不同?有人能说出真正的理由吗?

3 个答案:

答案 0 :(得分:14)

原因是operator precedence。您使用&&and&amp; =,优先顺序为

  • &&
  • =
  • and

您的计划中的$a按预期计算,但对于$b,首先计算语句$b = isset($one),给出意外结果。它可以修复如下。

$b = (isset($one) and isset($two));

答案 1 :(得分:1)

这是如何进行运营商分组的

$one = true;
$two = null;
$a = (isset($one) && isset($two));
($b = isset($one)) and isset($two);

echo $a.'<br>';
echo $b;

这就是为什么它首先返回false而第二次返回true。

答案 2 :(得分:0)

请参阅: http://www.php.net/manual/en/language.operators.logical.php

它解释说“和”与“&amp;&amp;”不同因为操作顺序不同。在这种情况下,首先进行分配。所以,如果你这样做:

$b = (isset($one) and isset($two));

你最终得到了预期的结果。