在 PHP 语句中使用 AND/OR

2022-08-30 08:08:49

如何在 if else PHP 语句中使用 'AND/OR'?会不会是:

1) 和

if ($status = 'clear' AND $pRent == 0) {
    mysql_query("UPDATE rent 
                    SET dNo = '$id', 
                        status = 'clear', 
                        colour = '#3C0' 
                  WHERE rent.id = $id");
} 

2) 或

if ($status = 'clear' OR $pRent == 0) {
    mysql_query("UPDATE rent 
                    SET dNo = '$id', 
                        status = 'clear', 
                        colour = '#3C0' 
                  WHERE rent.id = $id");
} 

答案 1

是的。答案是肯定的。
http://www.php.net/manual/en/language.operators.logical.php


但有两件事:

  • 许多程序员更喜欢 和 而不是 and ,但它们的工作方式相同(优先安全)。&&||andor
  • $status = 'clear'应该是 . 是赋值,是比较。$status == 'clear'===

答案 2

这里有一些开玩笑和误导性的评论,甚至部分不正确的答案信息。我想尝试改进它们:

首先,正如一些人所指出的,你的代码中有一个与问题相关的错误:

if ($status = 'clear' AND $pRent == 0)

应该是(注意在第一部分中代替):===

if ($status == 'clear' AND $pRent == 0)

在这种情况下,它在功能上等效于

if ($status == 'clear' && $pRent == 0)

其次,注意这些运算符()是短路运算符。这意味着,如果可以从第一个表达式中确定答案,则永远不会计算第二个表达式。同样,这对于上面的调试行无关紧要,但是当将这些运算符与赋值组合时,这一点非常重要,因为and or && ||

第三,和之间的真正区别在于它们的运算符优先级。具体而言,重要性在于其优先级高于赋值运算符 (),而优先级低于赋值运算符。因此,在结合使用赋值和逻辑计算的语句中,选择哪一个很重要。and or&& ||&& ||= += -= *= **= /= .= %= &= |= ^= <<= >>=and or

PHP页面关于逻辑运算符的修改示例:

$e = false || true;

将计算该值并将其赋值给 ,因为运算符优先级高于 ,因此它实质上是这样计算的:true$e||=

$e = (false || true);

然而

$e = false or true;

将赋值给 (然后执行操作并计算 ),因为具有比 更高的运算符优先级,实质上是这样的计算:false$eortrue=or

($e = false) or true;

事实上,这种模糊性甚至存在,这使得许多程序员总是使用,然后一切都像人们在C这样的语言中所期望的那样清晰地工作,即。首先是逻辑运算,然后是赋值。&& ||

像Perl这样的一些语言经常以类似于这样的格式使用这种结构:

$connection = database_connect($parameters) or die("Unable to connect to DB.");

从理论上讲,这会将数据库连接分配给 ,或者如果失败(我们在这里假设该函数将返回在这种情况下评估的内容),它将以错误消息结束脚本。由于短路,如果数据库连接成功,则永远不会计算 。$connectionfalsedie()

一些允许这种结构的语言直接禁止在条件/逻辑语句中进行赋值(如Python),以相反的方式消除友好性。

PHP允许两者,所以你只需要了解一次你的两个选项,然后按照你想要的方式编码,但希望你能以某种方式保持一致。

每当有疑问时,只需添加一组额外的括号,即可消除所有歧义。这些将始终是相同的:

$e = (false || true);
$e = (false or true);

有了所有这些知识,我更喜欢使用,因为我觉得它使代码更具可读性。我只是有一个规则,不要将分配与逻辑评估结合起来。但在这一点上,这只是一种偏好,一致性在这里比你选择哪一方更重要。and or


推荐