如何在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");
}
2)或
if ($status = 'clear' OR $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = '$id',
status = 'clear',
colour = '#3C0'
WHERE rent.id = $id");
}
答案 0 :(得分:107)
是。答案是肯定的。
http://www.php.net/manual/en/language.operators.logical.php
但有两件事:
&&
和||
而不是and
和or
,但它们的工作方式相同(优先级安全)。$status = 'clear'
应该是$status == 'clear'
。 =
是作业,==
是比较。答案 1 :(得分:12)
有点晚但无所谓......
问题是“你怎么用......?”简短的回答是你做得对吗
&&
代替AND
和||
代替OR
。
$a = 1
$b = 3
现在,
if ($a == 1 && $b == 1) { TRUE } else { FALSE }
在这种情况下,结果为“FALSE”,因为B不是1,现在如果
if ($a == 1 || $b == 1) { TRUE } else { FALSE }
即使B仍然不是我们要求的值,这将返回“TRUE”,还有另一种方法可以在不使用OR / ||的情况下返回TRUE那将是XOR
if ($a == 1 xor $b == 1) { TRUE } else { FALSE }
在这种情况下,我们只需要我们的一个变量为真,但如果两者都为TRUE,那么结果将为FALSE。
我希望这会有所帮助......
更多内容:
http://www.php.net/manual/en/language.operators.logical.php
答案 2 :(得分:11)
这里有一些开玩笑和误导性的评论,甚至是部分不正确的信息。我想尝试改进它们:
首先,正如有人指出的那样,您的代码中存在与问题相关的错误:
if ($status = 'clear' AND $pRent == 0)
应该是(请注意第一部分中的==
而不是=
):
if ($status == 'clear' AND $pRent == 0)
在这种情况下 在功能上等同于
if ($status == 'clear' && $pRent == 0)
第二,请注意这些运算符(and or && ||
)是短路运算符。这意味着如果可以从第一个表达式确定地确定答案,则永远不会评估第二个答案。对于上面的调试行,这也无关紧要,但在将这些运算符与赋值组合时非常重要,因为
第三次,and or
和&& ||
之间的真正区别在于他们operator precedence。具体而言,重要的是&& ||
具有比赋值运算符(= += -= *= **= /= .= %= &= |= ^= <<= >>=
)更高的优先级,而and or
具有比赋值运算符更低的优先级。因此,在一个结合使用赋值和逻辑评估的陈述中,你选择哪个是重要的。
来自PHP's page on logical operators的修改示例:
$e = false || true;
将评估为true
并将该值分配给$e
,因为||
的运算符优先级高于=
,因此它的计算结果如下:
$e = (false || true);
然而
$e = false or true;
会将false
分配给$e
(然后执行or
操作并评估true
),因为=
的运算符优先级高于or
,基本上这样评价:
($e = false) or true;
这种模糊性甚至存在的事实使得许多程序员总是使用&& ||
然后一切都清楚地像C语言那样,即。首先是逻辑运算,然后是赋值。
像Perl这样的语言经常使用这种类型的结构:
$connection = database_connect($parameters) or die("Unable to connect to DB.");
这理论上会将数据库连接分配给$connection
,或者如果失败(我们在这里假设函数将返回在这种情况下评估为false
的内容),它将结束带有错误消息的脚本。由于短路,如果数据库连接成功,则永远不会评估die()
。
允许此构造的某些语言直接禁止在条件/逻辑语句(如Python)中进行分配,以反过来消除歧义。
PHP允许两者兼容,所以你只需要了解一下你的两个选项,然后编写你喜欢的代码,但希望你会以这样或那样的方式保持一致。
每当有疑问时,只需输入一组额外的括号,即可消除所有歧义。这些将永远是相同的:
$e = (false || true);
$e = (false or true);
拥有所有这些知识,我更喜欢使用and or
,因为我觉得它使代码更具可读性。我只是有一条规则,不将任务与逻辑评估结合起来。但在这一点上,这只是一种偏好,而且这里的一致性比你选择哪一方要重要得多。
答案 3 :(得分:9)
这里有2个问题。
使用==
进行比较。您已使用=
进行分配。
将&&
用于“和”,将||
用于“或”。 and
和or
会有效,但它们是非常规的。
答案 4 :(得分:6)
AND是&&
,OR是||
,就像在C中一样。
答案 5 :(得分:4)
AND
和OR
只是&&
和||
的语法糖,就像JavaScript或其他C风格的语法语言一样。
它比它们的C风格等价物appears AND
and OR
have lower precedence。
答案 6 :(得分:2)
对于你使用
if ($status = 'clear' && $pRent == 0) {
mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id");
}
对于你使用的
if ($status = 'clear' || $pRent == 0) {
mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id");
}
答案 7 :(得分:0)
我想我在这里有点困惑。 :)但似乎没有其他人有..
您是在问这个场景中使用哪一个?如果是,那么并且是正确答案。
如果您询问运营商的运作方式,那么
在php中, AND,&amp;&amp; 和 OR,|| 将以相同的方式工作。如果你是编程新手,php是你的第一种语言之一,我建议使用AND和OR,因为它可以增加可读性并减少你回来时的混乱。但如果你已经熟悉其他任何语言,那么你可能已经熟悉了&amp;&amp; amp;和||运算符。
答案 8 :(得分:0)
<?php
$val1 = rand(1,4);
$val2=rand(1,4);
if ($pars[$last0] == "reviews" && $pars[$last] > 0) {
echo widget("Bootstrap Theme - Member Profile - Read Review",'',$w[website_id],$w);
} else { ?>
<div class="w100">
<div style="background:transparent!important;" class="w100 well" id="postreview">
<?php
$_GET[user_id] = $user[user_id];
$_GET[member_id] = $_COOKIE[userid];
$_GET[subaction] = "savereview";
$_GET[ip] = $_SERVER[REMOTE_ADDR];
$_GET[httpr] = $_ENV[requesturl];
echo form("member_review","",$w[website_id],$w);?>
</div></div>
我用'&amp;&amp;'取代了'else'所以两个都放在...... argh
答案 9 :(得分:-1)
“AND”在我的PHP代码中不起作用。
服务器的版本可能吗?
“&安培;&安培;”工作正常。