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

可能重复:
'AND'和'&&'作为运算符

对不起,基本的问题,但我开始学习PHP只是一个星期前,并找不到在谷歌/ 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;
    

    这就是为什么它返回虚假第一和真实第二。


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

    它解释说,“和”不同于“&&”,因为操作顺序是不同的。 在这种情况下,分配首先发生。 所以如果你这样做:

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

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

    链接地址: http://www.djcxy.com/p/57603.html

    上一篇: PHP operator difference && and "and"

    下一篇: Practical Application of Bitwise Operators