“&&”和“AND”在PHP中是不同的


'&&' and 'AND' is different in PHP

$A = True;
$B = False;
$C = $A AND $B;
$D = $A && $B;
echo 'C='.$C.'<br/>';
echo 'D='.$D.'<br/>';

输出:C=1
D=

还是我错过了什么?

AND的优先级较低。

$C = $A AND $B将被解析为 ($C = $A) AND $B

对于变量$a和$b设置如下:

<?php
$a = 7;
$b = 0;

使用 AND 的优点是短路计算,该计算发生在代码中,如下所示:

$c = $a AND $b;
var_dump( $c ); // 7

由于赋值运算符的优先级高于 AND,因此$a的值将分配给$c;$b被跳过。

相比之下,请考虑以下代码:

<?php
$c = $a && $b;
var_dump( $c ); // (bool) false

在此代码段中,&& 的优先级高于赋值运算符,并且给定 $a 的值不为零,因此不存在短路。此逻辑 AND 的结果基于对$a和$b的评估。 $a评估为真,$b评估为假。表达式的总体值 false 是分配给$c的值。 此结果与前面的示例完全不同。

两者都

有相同的东西,但&&的优先级高于AND.

有关更多信息:- "AND"与"&&"作为运算符

如果要测试逻辑值,请使用var_dump() 。喜欢这个:

$a = true;
$b = false;
echo '<pre>';
var_dump($a AND $b);
echo PHP_EOL;
var_dump($a && $b);
echo '</pre>'

D 是正确的输出。

PHP 不会回显错误值,但如果你var_dump($D);,那么你应该看到该值是false

尝试执行布尔运算时应使用 &&