你如何在if else PHP语句中使用'AND/OR'?可不可能是:
1)AND
if ($status = 'clear' AND $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = '$id',
status = 'clear',
colour = '#3C0'
WHERE rent.id = $id");
}
Run Code Online (Sandbox Code Playgroud)
2)或
if ($status = 'clear' OR $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = '$id',
status = 'clear',
colour = '#3C0'
WHERE rent.id = $id");
}
Run Code Online (Sandbox Code Playgroud)
dec*_*eze 117
是.答案是肯定的.
http://www.php.net/manual/en/language.operators.logical.php
但有两件事:
&&而||不是and和or,但它们的工作方式相同(优先级安全).$status = 'clear'应该是$status == 'clear'.=是作业,==是比较.Tan*_*ker 13
有点晚但无所谓......
问题是"你怎么用......?" 简短的回答是你做得对
&&的,而不是AND和||代替OR.
$a = 1
$b = 3
Run Code Online (Sandbox Code Playgroud)
现在,
if ($a == 1 && $b == 1) { TRUE } else { FALSE }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,结果是"FALSE",因为B不是1,现在如果是
if ($a == 1 || $b == 1) { TRUE } else { FALSE }
Run Code Online (Sandbox Code Playgroud)
即使B仍然不是我们要求的值,这将返回"TRUE",还有另一种方法可以在不使用OR/||的情况下返回TRUE 这将是异或
if ($a == 1 xor $b == 1) { TRUE } else { FALSE }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们只需要我们的一个变量为真,但如果两者都为TRUE则结果为FALSE.
我希望这有帮助...
更多内容:http:
//www.php.net/manual/en/language.operators.logical.php
red*_*ard 11
这里有一些开玩笑和误导性的评论,甚至是部分不正确的信息.我想尝试改进它们:
首先,正如一些人所指出的那样,您的代码中存在与该问题相关的错误:
if ($status = 'clear' AND $pRent == 0)
Run Code Online (Sandbox Code Playgroud)
应该(注意==而不是=在第一部分):
if ($status == 'clear' AND $pRent == 0)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它在功能上等同于
if ($status == 'clear' && $pRent == 0)
Run Code Online (Sandbox Code Playgroud)
其次,请注意这些运算符(and or && ||)是短路运算符.这意味着如果可以从第一个表达式确定地确定答案,则永远不会评估第二个答案.对于上面的调试行,这也无关紧要,但是当您将这些运算符与赋值组合时,这非常重要,因为
第三,and or和之间的真正区别在于&& ||它们的运算符优先级.具体而言,重要的是&& ||具有比赋值运算符(= += -= *= **= /= .= %= &= |= ^= <<= >>=)更高的优先级,同时and or具有比赋值运算符更低的优先级.因此,在结合使用分配和逻辑评估的陈述中,您选择哪一个很重要.
PHP逻辑运算符页面中的修改示例:
$e = false || true;
Run Code Online (Sandbox Code Playgroud)
将评估true并将该值赋值给$e,因为它||具有更高的运算符优先级=,因此它实际上的计算结果如下:
$e = (false || true);
Run Code Online (Sandbox Code Playgroud)
然而
$e = false or true;
Run Code Online (Sandbox Code Playgroud)
将分配false给$e(然后执行or操作和评估true)因为=具有更高的运算符优先级or,基本上像这样评估:
($e = false) or true;
Run Code Online (Sandbox Code Playgroud)
这种模糊性甚至存在的事实使得很多程序员总是使用&& ||,然后一切都清楚地像C语言那样,即.首先是逻辑运算,然后是赋值.
像Perl这样的语言经常使用这种类型的格式:
$connection = database_connect($parameters) or die("Unable to connect to DB.");
Run Code Online (Sandbox Code Playgroud)
这理论上会将数据库连接分配给$connection,或者如果失败(并且我们假设此处函数将返回false在这种情况下评估的值),它将以错误消息结束脚本.由于短路,如果数据库连接成功,die()则永远不会评估.
一些允许这种结构的语言直接禁止条件/逻辑语句(如Python)中的赋值,以反过来消除歧义.
PHP同时允许这两个选项,所以你只需要了解一下你的两个选项,然后编写你喜欢的代码,但希望你会以这样或那样的方式保持一致.
每当有疑问时,只需抛出一组额外的括号,即可消除所有歧义.这些将永远是相同的:
$e = (false || true);
$e = (false or true);
Run Code Online (Sandbox Code Playgroud)
有了所有这些知识,我更喜欢使用,and or因为我觉得它使代码更具可读性.我只是有一条规则,不将任务与逻辑评估结合起来.但在这一点上,这只是一种偏好,而且一致性比你选择哪一方更重要.