首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP !is_resource ($RS ) vs ($RS === false) vs !$RS

PHP !is_resource ($RS ) vs ($RS === false) vs !$RS
EN

Stack Overflow用户
提问于 2017-02-21 03:51:43
回答 2查看 391关注 0票数 0

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

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

方法1-使用!is_resource,它比方法2中的直接比较具有更多的开销

代码语言:javascript
复制
$RS = sqlsrv_query($con, $SQL);
if (!is_resource($RS)) {
    die('not a resource');
}

方法2--直接比较

代码语言:javascript
复制
$RS = sqlsrv_query($con, $SQL);
if ($RS === false) {
    die('not a resource');
}

方法3-这与方法2相同,只是更少的话?或者是我遗漏了===的一些细微差别?

代码语言:javascript
复制
$RS = sqlsrv_query($con, $SQL);
if (!$RS) {
    die('not a resource');
}

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-02-21 04:12:23

mysql_connect将仅返回资源或false。

实际上,!$db_link$db_link === false是相同的。编辑:“在这个实例中。”它们实际上并不相同,因为===执行严格的类型检查,但出于本文讨论的目的,它们实际上是相同的。

is_resource实际上也是一样的,只是开销稍微多一点,但还不足以关注这样的微优化。

您不应该使用mysql_函数编写新代码。它已经被弃用了很长一段时间。替代方案是mysqli_

票数 0
EN

Stack Overflow用户

发布于 2017-02-21 04:22:37

如果您知道您正在处理的可能值是什么,并且这些值可以通过简单的布尔测试清楚地区分出来,那么这就足够了。mysql_connect返回资源或布尔型false。布尔型false永远是假的,资源永远是真的,因此if (!$db_link)是一个完全足够和简洁的测试。在给定两个可能的$db_link值的情况下,这不会失败。

=== false对布尔比较更加明确,但这是不必要的。它不会增加任何东西,除了冗长。

is_resource也适用于您的目的,并且以另一种方式更加明确,但也是不必要的。它不会匹配任何额外的情况,简单的布尔比较在这里是不会的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42353121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档