在if-else PHP语句中使用和/或

在if-else PHP语句中使用和/或,php,if-statement,Php,If Statement,在if-else-PHP语句中如何使用“AND/OR”?是不是: 1) 及 2) 或 是&&还是|与C类似。这里有两个问题 使用==进行比较。您已经使用了用于分配的= 使用&&表示“和”,使用|表示“或”和和或将起作用,但它们是非常规的 和和或只是&和|的语法糖,就像在JavaScript或其他C风格的语法语言中一样 它比它们的C风格的等价物要好。是的。答案是肯定的。 但有两件事: 许多程序员更喜欢&和|而不是和和或,但它们的工作原理是一样的(优先安全) $status='clear'可能

在if-else-PHP语句中如何使用“AND/OR”?是不是:

1) 及

2) 或


&&
还是
|
与C类似。

这里有两个问题

  • 使用
    ==
    进行比较。您已经使用了用于分配的
    =

  • 使用
    &&
    表示“和”,使用
    |
    表示“或”
    将起作用,但它们是非常规的


  • 只是
    &
    |
    的语法糖,就像在JavaScript或其他C风格的语法语言中一样


    它比它们的C风格的等价物要好。

    是的。答案是肯定的。


    但有两件事:

    • 许多程序员更喜欢
      &
      |
      而不是
      ,但它们的工作原理是一样的(优先安全)
    • $status='clear'
      可能应该是
      $status=='clear'
      <代码>=
      是赋值,
      =
      是比较
    用于和您使用

    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中,&&&
    或,| |的工作方式相同。如果您是编程新手,并且php是您最早使用的语言之一,我建议您使用and和OR,因为它可以提高可读性,并在您回头查看时减少混乱。但是如果您已经熟悉任何其他语言,那么您可能已经熟悉了&&和| |运算符。

    有点晚了,但没关系……
    问题是“你如何使用…?”简短的回答是你做得正确

    另一个问题是“你什么时候使用它?”
    我用
    &
    代替
    |
    代替

    $a = 1
    $b = 3
    
    现在,

    在这种情况下,结果为“FALSE”,因为B不是1,那么如果

    if ($a == 1 || $b == 1) { TRUE } else { FALSE }
    
    这将返回“TRUE”,即使B仍然不是我们要求的值,还有另一种不使用OR/| | |的方法返回TRUE,那就是XOR

    if ($a == 1 xor $b == 1) { TRUE } else { FALSE }
    
    在这种情况下,我们只需要一个变量为真,但不需要两者都为真。如果两者都为真,结果将为假

    我希望这有助于

    更多信息请访问:
    “和”在我的PHP代码中不起作用

    可能是服务器版本


    “&&”很好。

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

    首先,正如一些人指出的,您的代码中有一个与问题相关的bug:

    if ($status = 'clear' AND $pRent == 0)
    
    应该是(注意第一部分中的
    =
    而不是
    =
    ):

    在这种情况下,功能等同于

    if ($status == 'clear' && $pRent == 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>
    
    修改了以下示例:

    将计算为
    true
    ,并将该值赋给
    $e
    ,因为
    |
    的运算符优先级高于
    =
    ,因此它的计算结果基本上如下:

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

    $e = false or true;
    
    false
    分配给
    $e
    (然后执行
    操作并计算
    true
    ),因为
    =
    具有比
    更高的运算符优先级,基本上计算如下:

    $e = (false || true);
    
    ($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);
    
    有了这些知识,我更喜欢使用
    和/或
    ,因为我觉得这样可以使代码更具可读性。我只是有一条规则,不能把作业和逻辑评估结合起来。但在这一点上,这只是一种偏好,在这里,一致性比选择哪一方更重要。

    
    
    <?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>
    
    我用“&&”替换了“else”,所以两者都放在。。。啊

    这很少见,但也许
    $e = (false || true);
    $e = (false or true);
    
    <?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>