PHP "or" 语法



我经常看到这个:$fp = fopen($filepath, "w") or die();但我似乎找不到任何关于"or"语法的真正文档。它的作用很明显,但我可以在任何地方使用它吗?它后面必须跟die()吗?当你可以使用之类的东西时,使用or有什么注意事项吗

if (file_exists($filepath))
   $fp = fopen($filepath,"r");
else
   myErrMessage();

我知道这似乎是一个愚蠢的问题,但我找不到任何硬性规定。谢谢

它是一个逻辑运算符,可以在任何逻辑表达式中使用。

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

就这么说吧:

$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的前身,基于这样一个事实,即PHP非常聪明地不会在OR之后计算任何表达式,如果第一个表达式返回true:

function a($ret){
    echo "FOO";
    return $ret;
}
function b($ret){
    echo "BAR";
    return $ret;
}
$result = (a(true) OR b(true));

将只打印出FOO,这意味着b()甚至没有被执行。

or只是进行布尔比较。

fopen()返回的内容可以被视为布尔值,因为如果失败,它将返回FALSE(如果失败,则返回不同的值)。

如果失败,则向右计算该语句,因此调用函数die()

基本意思是"如果第一个命令失败,那么执行第二个命令。"在您的示例中,如果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()技巧是一个非常糟糕的选择,原因有几个:

  1. 这不是向用户显示错误消息的好方法
  2. 你无论如何都抓不到这个错误
  3. 您无法记录错误
  4. 您无法控制是否应将其输出到屏幕。在开发环境中这样做是可以的,但在生产环境中肯定不行。

    5.它阻止你进行任何形式的清理。它只是突然结束了剧本

参考:【在此处输入链接描述】[1]

[1] :http://www.phpfreaks.com/blog/or-die-must-dieenter code here

它可以像使用||作为逻辑OR一样使用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。

相关内容

  • 没有找到相关文章

最新更新