可能重复:
PHP - and / or keywords
我以一种我不熟悉的方式使用or
看到了几段PHP代码。例如:
fopen($site,"r") or die("Unable to connect to $site");
这是否等于||
?
为什么要使用此而不是try catch
块?什么会导致程序运行or die()
?
答案 0 :(得分:9)
大部分时间,但是......
两个不同的原因 “和”和“或”运算符的变体 是他们在不同的地方运作 优先级。
答案 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)
是的,等于||
在这种情况下,它显式停止执行页面并打印该错误消息。