php - 'or' 是否被视为对语句返回的 bool 检查?

标签 php

处理失败的常见方法是:

$result = mysql_query("SELECT * FROM table1") or myFailureFunction();

结果是当查询失败时,myFailureFunction() 被调用。

以下代码是否存在不完全相同的情况?

$result = mysql_query("SELECT * FROM table1");
if(!$result)
{
    myFailureFunction();
}

注释:

  1. 我已经测试了连接失败、SQL 语法失败和空结果,它似乎对所有这些都有效。我想知道是否有任何情况它不起作用。
  2. 我知道有更好的方法来处理失败。
  3. 有一个问题涉及 or 的 bool 性质。我想知道的是, or 是对返回的结果进行操作还是其他操作?问题:PHP: 'or' statement on instruction fail: how to throw a new exception?

最佳答案

就您而言,它们完全相同,因为 short circuit evaluation ,但是如果返回 null 或其他错误值,则会产生影响。注:

function f(){return false;} 
function w(){return "w";} 
$a = f() or w(); 
echo isset($a);
// 1 (true). $a === FALSE!

现在,请注意缺少返回会发生什么:

function f(){} 
function w(){return "w";} 
$a = f() or w(); 
echo isset($a);
// nothing (false)

关于php - 'or' 是否被视为对语句返回的 bool 检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244915/

相关文章:

Windows 上的 PHP/MySQLi : inserts into a MySQL innoDB Table increases the AUTO_INCREMENT column by 2

php - 使用 PHP/MySQL 运行查询,然后按另一列对结果重新排序

php - 制作自动换行。 PHP 到 Excel

php - php中的整数

php - 我如何将此数据发送到 Facebook? facebook api 照片上传

php - 动态访问 PHP 数组

php - 策略查询执行

php - 我如何为从 file_get_content 获得的页面调用 css

php - spl_object_hash 匹配,对象不相同

php - 错误 : Invalid PathExpression. 必须是 StateFieldPathExpression