【问题标题】:What does "or" in php mean? [duplicate]php中的“或”是什么意思? [复制]
【发布时间】:2011-08-10 11:34:21
【问题描述】:

可能重复:
PHP - and / or keywords

我看到了几段使用or 的PHP 代码,但我并不熟悉。例如:

fopen($site,"r") or die("Unable to connect to $site");

这等于||吗?

为什么要使用它而不是 try catch 块?什么会导致程序运行or die()

【问题讨论】:

  • 拿枪顶着你的脑袋:打开文件或死!
  • 你知道,我不认为这是重复的。这真的是一个关于“表达或死亡”意味着什么的问题。

标签: php syntax


【解决方案1】:

大部分是这样,但是……

两者不同的原因 “and”和“or”运算符的变体 是他们在不同的地方运作 优先级。

http://php.net/manual/en/language.operators.logical.php

【讨论】:

    【解决方案2】:

    or 等于 || 除了 ||or 具有更高的前导。

    参考:

    http://www.php.net/manual/en/language.operators.precedence.php

    【讨论】:

      【解决方案3】:

      or 具有其他优先级。具体的语句是布尔运算符的小技巧。就像在一个常见的if-test-expression 中一样,只有在第一部分被评估为false 时才会执行第二部分。这意味着,如果fopen() 没有失败,则die() 根本不会被触及。

      但是,try-catch 仅适用于异常,但 fopen() 不会抛出任何异常。

      今天这样的事情是“不太好”的风格。使用异常而不是硬流产

      if (!($res = fopen($site, 'r'))) throw new Exception ("Reading of $site failed");
      

      【讨论】:

        【解决方案4】:

        第一个命令失败时会发生死亡。

        它类似于try catch,但这是更直接的方法。

        请注意,这是一个经典测试:

        fopen($site,"r") or die("Unable to connect to $site");
        

        只有当 fopen($site,"r") 返回 false 时,才会运行测试的后半部分:'die('error')'。

        同样是 if(a || b); b 仅在 a 返回 false 时运行。

        在 PHP 中死掉和 exit() 一样; http://www.php.net/manual/en/function.exit.php

        完全停止当前脚本的执行,并打印出错误消息。

        【讨论】:

        • 它与try-catch不同。
        • 类似尝试 catch ,它尝试第一个语句,如果为 false,则执行第二个。或为真,不执行第二条语句,或'catch'。我在评论海报问题'为什么要使用它而不是 try catch 块? ' 当 try/catch 出错时,这是布尔值。
        【解决方案5】:

        是的,它等于||

        在这种情况下,它会显式停止页面的执行并打印该错误消息。

        【讨论】:

        • 不相等...优先级不同...
        猜你喜欢
        • 2011-05-31
        • 2011-05-29
        • 2011-01-17
        • 2013-09-26
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多