在if语句中使用AND / OR
如何在其他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"); } 
	
 是。 答案是肯定的。 
  http://www.php.net/manual/en/language.operators.logical.php 
两件事,虽然:
-  许多程序员更喜欢&&和||而不是and和or,但他们工作相同(安全的优先)。
-   $status = 'clear'应该是$status == 'clear'。=是赋值,==是比较。
你有两个问题在这里。
- 
用 ==来比较。 你已经使用=哪个是分配。
- 
使用 &&为“和”和||为“或”。andor将工作,但他们是非常规的。
 有点晚,但不要紧 
 问题是“你如何使用…?” 简短的答案是你正在做的是正确的 
 另一个问题是“你什么时候用它?” 
 我使用&&而不是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 } 
这将返回“TRUE”,即使B仍然不是我们要求的值,还有另一种方法返回TRUE而不使用OR / || 这将是异或
 if ($a == 1 xor $b == 1) { TRUE } else { FALSE } 
在这种情况下,我们只需要我们的一个variables是真的,但不是两个,如果两个都是真的结果将是假的。
我希望这有帮助…
 更多在: 
  http://www.php.net/manual/en/language.operators.logical.php 
这里有一些开玩笑,误导性的评论,甚至是部分不正确的信息。 我想尝试改进他们:
首先 ,正如一些人所指出的,你的代码中存在一个与这个问题相关的错误:
 if ($status = 'clear' AND $pRent == 0) 
 应该是(注意==而不是=在第一部分): 
 if ($status == 'clear' AND $pRent == 0) 
在这种情况下在function上等同于
 if ($status == 'clear' && $pRent == 0) 
  其次 ,请注意,这些运算符( and or && || )是短路操作符。 这意味着如果答案可以从第一个expression式中确定,那么第二个expression式就不会被评估。 再次,这对你上面的debugging行不重要,但是当你将这些操作符与赋值相结合时,这是非常重要的,因为 
  第三 , and or与&& ||之间的真正区别 是他们的运营商优先 。 具体而言,重要的是&& || 具有比赋值运算符更高的优先级( = += -= *= **= /= .= %= &= |= ^= <<= >>= )。 因此,在一个结合使用分配和逻辑评估的陈述中,你select哪一个是重要的。 
逻辑运算符上PHP页面的修改示例:
 $e = false || true; 
 将评估为true并将该值赋值给$e ,因为|| 具有比=更高的运算符优先级,因此它本质上是这样评估的: 
 $e = (false || true); 
然而
 $e = false or true; 
 将赋值为$e (然后执行or操作并评估为true ),因为=具有更高的运算符优先级, or本质上如此评估: 
 ($e = false) or true; 
 这个歧义甚至存在的事实使得很多程序员总是使用&& || 然后一切就像人们所期待的那样用C语言来工作, 首先逻辑运算,然后赋值。 
像Perl这样的一些语言经常使用这种types的结构:
 $connection = database_connect($parameters) or die("Unable to connect to DB."); 
 这在理论上将数据库连接分配给$connection ,或者如果失败(我们假设函数在这种情况下返回值为false ),它将会以错误信息结束脚本。 由于短路,如果数据库连接成功, die()永远不会被评估。 
一些允许这种构造的语言直接禁止在条件/逻辑语句(比如Python)中的赋值来消除歧义。
PHP同时允许这两个,所以你只需要了解一下你的两个select,然后编码你想如何,但希望你会一直这样或那样的一致。
无论什么时候有疑问,只要引入一个额外的括号,这将消除所有的歧义。 这些将永远是一样的:
 $e = (false || true); $e = (false or true); 
 掌握所有这些知识,我更喜欢使用and or因为我觉得它使代码更具可读性。 我只是有一个规则,不要把任务和逻辑评估结合起来。 但是在这一点上,这只是一种偏好,在这里,一致性比你select的哪一方更重要。 
  AND是&&和OR是|| 像在C. 
  AND和OR只是&&和||语法糖  ,就像使用JavaScript或其他C风格的语法语言一样。 
 它看起来AND和OR优先级比它们的C风格等价。 
为和你使用
 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"); } 
我想我在这里有点混乱。 :)但似乎没有其他人有..
你问在这种情况下使用哪一个? 如果是,那么是正确的答案 。
那么,如果你问运营商是如何工作的话
在PHP中, AND,&&和OR,|| 将以相同的方式工作。 如果你是编程新手,php是你的第一种语言,我build议你使用AND和OR,因为它增加了可读性,并且在你回来时减less了混淆。 但是,如果您已经熟悉其他语言,那么您可能已经熟悉了&&和|| 运营商。
 <?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> 
ive用'&&'取代了'else',所以都放在… argh
“AND”在我的PHP代码中不起作用。
服务器的版本可能?
“&&“ 工作正常。