我已经看到了很多:$fp = fopen($filepath, "w") or die();
但我似乎找不到任何关于这种“或”语法的真实文档。它的作用很明显,但我可以在任何地方使用它吗?必须跟在后面die()
吗?or
当您可以使用类似
if (file_exists($filepath))
$fp = fopen($filepath,"r");
else
myErrMessage();
我知道这似乎是一个愚蠢的问题,但我找不到任何硬性规定。谢谢。
我已经看到了很多:$fp = fopen($filepath, "w") or die();
但我似乎找不到任何关于这种“或”语法的真实文档。它的作用很明显,但我可以在任何地方使用它吗?必须跟在后面die()
吗?or
当您可以使用类似
if (file_exists($filepath))
$fp = fopen($filepath,"r");
else
myErrMessage();
我知道这似乎是一个愚蠢的问题,但我找不到任何硬性规定。谢谢。
它是一个逻辑运算符,可用于任何逻辑表达式。
让我们这么说:
$result = first() || second();
将评估为:
if (first()) {
$result = true;
} elseif (second()) {
$result = true;
} else {
$result = false;
}
尽管:
$result = first() or second();
将评估为:
if ($result = first()) {
// nothing
} else {
second();
}
换句话说,您可以考虑:
$result = first() || second();
$result = (first() || second());
和:
$result = first() or second();
成为:
($result = first()) || second();
这只是优先级的问题。
这是一个巧妙的技巧,继承自一些 PHP 的前身,基于这样一个事实,即如果第一个返回 true,PHP 不会计算 OR 之后的任何表达式:
function a($ret){
echo "FOO";
return $ret;
}
function b($ret){
echo "BAR";
return $ret;
}
$result = (a(true) OR b(true));
只会打印出来FOO
,意味着 b() 甚至没有被执行。
基本上它的意思是“如果第一个命令失败,则执行第二个命令”。在您的示例中,如果 PHP 无法打开文件,它将终止脚本 ( die()
)。
PHP 中的 'Or' 类似于 C 语法 (||)
<?php
if( ($a==1 || $a==2) && ($b==3 || $b==4) && ($c==5 || $c==6) ) {
//do that something here.
}
?>
您所说的“或”只是一个技巧,如下所示:
例子:
$result = mysql_query('SELECT foo FROM bar', $db) or die('Query failed: ' . mysql_error($db));
or die() 技巧是一个非常糟糕的选择,原因如下:
您无法控制它是否应该输出到屏幕上。在开发环境中这样做是可以的,但在生产环境中肯定不行。
5. 它会阻止您进行任何类型的清理工作。它只是突然结束脚本。
参考:[在此处输入链接描述][1]
[1]:http ://www.phpfreaks.com/blog/or-die-must-dieenter code here
它可以像使用 || 一样使用 作为逻辑或http://php.net/manual/en/language.operators.logical.php
它可以用作||
但没有相同的优先级:
http ://www.php.net/manual/en/language.operators.precedence.php
运算符的优先级指定了它将两个表达式绑定在一起的“紧密程度”。例如,在表达式 1 + 5 * 3 中,答案是 16 而不是 18,因为乘法 ("*") 运算符的优先级高于加法 ("+") 运算符。如有必要,括号可用于强制优先级。例如: (1 + 5) * 3 计算结果为 18。