PHP 中 “&&” 和 “AND” 运算符的比较。


PHP 提供了强大的运算符来执行算术、赋值、比较等多种操作……本文将重点介绍逻辑运算符 “&&” 和 “AND”,并研究如何根据它们的优先级来使用它们。逻辑运算符 “&&” 和 “AND” 的结果是真或假,因此它们也被称为布尔运算符。

在深入研究之前,让我们先了解一下什么是 “AND” 运算符?“AND” 运算符只有当两个条件都为真时才返回真。让我们通过一个例子来演示 “AND” 运算符。

示例

<?php
   $val1 = 20;
   $val2 = 50;
   if ($val1 == 20 and $val2== 50)
      echo "True";
   else
      echo "False";
?>

输出

True

解释

由于变量 $val1 = 20 且 $val2 = 50,条件 $val1 == 20 评估为真,$val2 == 50 也评估为真。因此,两个操作数都为真,结果也为真。让我们讨论另一个示例。

示例 2

<?php
   $a = 30;
   $b = 50;
   if ($a == 30 and $b == 10)
      echo "True";
   else
      echo "False";
?>

输出

False

解释

由于我们声明了变量 $a = 30 和 $b = 50,条件 $a == 30 评估为真,但当在声明中输入 $b = 50 并在条件 $b == 10 中返回假时,所以 AND 操作的结果将为假。

现在来看 “&&” 运算符,它的作用与 “AND” 运算符相同,如果表达式中的两个条件/操作数都为真,则返回真。现在让我们看一下下面使用 “&&” 运算符的示例。

示例

<?php
   $val1 = 25;
   $val2 = 5;
   if ($val1 == 25 && pow($val2, 2) == $val1)
      echo "True";  
   else
      echo "False";
?>

输出

True

解释

由于变量 $val1 = 25 且 $val2 = 5,条件 $val1 == 25 评估为真,而 pow($val2, 2) == $val1 也评估为真,因为 $val2= 5 的 2 次幂是 25,它等于 $val1。因此,'$val1 == 25&& pow($val2, 2) == $val1' 评估为真,因为 AND 逻辑规定只有当两个操作数都为真时,AND 操作的结果才为真。

注意

让我们再举一个例子,如果我们声明输入 $val2 = 20,条件 pow($val2, 2) == $val1 将导致假,所以 AND 操作的结果将为假。

现在讨论 “AND” 和 “&&” 运算符在优先级方面的比较。运算符是在表达式中根据运算符的优先级执行的。'&&' 运算符的优先级较高,而 “AND” 运算符的优先级较低。让我们通过下面的示例来研究上述差异。

<?php
   $a =10;
   $b = NULL;
   $val = $a && $b;
   echo ($val ? 'TRUE' : 'FALSE'),"
";    $val = $a and $b;    echo ($val ? 'TRUE' : 'FALSE'); ?>

输出

FALSE
TRUE

解释

当操作数相同时,这两个运算符的结果不同。第一个表达式结果为 FALSE,而第二个表达式结果为 TRUE,尽管它们都使用了相同的操作。

第一个表达式 $val = $a && $b; 结果为 FALSE,因为首先执行 “&&” 操作,然后将结果赋值给变量 $val,因为 && 运算符的优先级高于 = 运算符的优先级。

第二个表达式 $bool = $a and $b; 评估为 TRUE,因为运算符 “and” 的优先级低于运算符 "=",所以变量 $a = 10(位于 = 的右侧)的值被赋值给 $val,因此 $val 持有 10,然后内部执行 “and” 操作,但没有赋值,因此 $val 现在持有 TRUE。

因此,为了澄清,“AND” 运算符和 “&&” 运算符之间的主要区别在于它们的优先级,但两者都执行相同的操作。

更新于:2019-12-31

425 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.