PHP!是资源($RS)vs($RS==false)vs$RS

PHP!是资源($RS)vs($RS==false)vs$RS,php,Php,在PHP中检查有效资源时,我想知道这些资源是否可以互换。前两种方法正在我工作的地方使用,据我所知,它们正在完成同样的事情 编辑:当我第一次问这个问题时,我使用了一些从PHP手册中复制的代码作为示例,其中包含mysql命令。因为我没有使用mysql,所以我决定重写这个问题 方法1-使用!是_资源,与方法2中的直接比较相比,它的开销稍大一些 $RS = sqlsrv_query($con, $SQL); if (!is_resource($RS)) { die('not a resource

在PHP中检查有效资源时,我想知道这些资源是否可以互换。前两种方法正在我工作的地方使用,据我所知,它们正在完成同样的事情

编辑:当我第一次问这个问题时,我使用了一些从PHP手册中复制的代码作为示例,其中包含mysql命令。因为我没有使用mysql,所以我决定重写这个问题

方法1-使用!是_资源,与方法2中的直接比较相比,它的开销稍大一些

$RS = sqlsrv_query($con, $SQL);
if (!is_resource($RS)) {
    die('not a resource');
}
方法2-直接比较法

$RS = sqlsrv_query($con, $SQL);
if ($RS === false) {
    die('not a resource');
}
方法3-这与方法2相同,只是不太冗长?或者我遗漏了===的一些细微差别

$RS = sqlsrv_query($con, $SQL);
if (!$RS) {
    die('not a resource');
}

谢谢

mysql\u connect将只返回资源或false

有效地,
$db_link
$db_link===false
是相同的。编辑:“在此实例中。”它们实际上并不相同,因为===执行严格的类型检查,但就本讨论而言,它们实际上是相同的

is\u resource
实际上也是一样的,只是稍微增加了一些开销,但不足以关注这样的微观优化


您不应该使用
mysql\uuz
函数编写新代码。它已经被弃用很长时间了。替换是
mysqli_uu

如果您知道您正在处理的可能值,并且这些值可以通过简单的布尔测试清楚地区分出来,那么这就足够了
mysql\u connect
返回资源或布尔值
false
。布尔值
false
将始终为false,资源将始终为truthy,因此
if(!$db_link)
是一个非常充分和简洁的测试。考虑到
$db\u link
可能存在的两个值,此操作不会失败

==false
对于布尔比较更为明确,但这是不必要的。除了冗长,它没有添加任何内容


is_resource
也适用于您的目的,在另一方面更为明确,但这也是不必要的。它与任何其他情况都不匹配,一个简单的布尔比较在这里是不匹配的。

您应该停止使用
mysql
扩展,它已经过时多年,并且已经从当前版本的PHP中删除。它们都是等价的
mysql\u connect()
返回资源或false。资源总是真实的。选择使用哪一种只是个人风格。