【问题标题】:PHP operator difference && and "and" [duplicate]PHP运算符的区别&&和“和” [重复]
【发布时间】:2012-08-29 09:48:12
【问题描述】:

可能重复:
'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

我读过 &&/并且是一样的。两者的结果有何不同?有人能说出真正的原因吗?

【问题讨论】:

    标签: php


    【解决方案1】:

    原因是operator precedence。在您使用的三个运算符中&amp;&amp;and=,优先顺序是

    • &amp;&amp;
    • =
    • and

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

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

    【讨论】:

      【解决方案2】:

      运算符的分组就是这样发生的

      $one = true;
      $two = null;
      $a = (isset($one) && isset($two));
      ($b = isset($one)) and isset($two);
      
      echo $a.'<br>';
      echo $b;
      

      这就是为什么它第一次返回 false,第二次返回 true。

      【讨论】:

        【解决方案3】:

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

        它解释了“and”与“&&”的不同之处在于操作顺序不同。在这种情况下,分配首先发生。所以如果你这样做:

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

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

        【讨论】:

          猜你喜欢
          • 2013-05-16
          • 1970-01-01
          • 1970-01-01
          • 2010-12-30
          • 1970-01-01
          • 2022-01-19
          • 2016-06-22
          • 2017-12-25
          • 2013-07-06
          相关资源
          最近更新 更多