php中的“或”是什么意思?

时间:2011-04-21 17:07:18

标签: php syntax

  

可能重复:
  PHP - and / or keywords

我以一种我不熟悉的方式使用or看到了几段PHP代码。例如:

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

这是否等于||

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

5 个答案:

答案 0 :(得分:9)

大部分时间,但是......

  

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

请参阅http://php.net/manual/en/language.operators.logical.php

答案 1 :(得分:2)

or等于|| 除{/ 1}}之前的||具有更高的presedense而不是or

参考:

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

答案 2 :(得分:1)

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

但是,try-catch仅适用于例外,但fopen()不会抛出任何内容。

今天这样的事情是“不太好”的风格。使用例外而不是硬堕胎

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

答案 3 :(得分:0)

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

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

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

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

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

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

在PHP中死亡与exit()相同; http://www.php.net/manual/en/function.exit.php

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

答案 4 :(得分:-1)

是的,等于||

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