在PHP中检查有效资源时,我想知道它们是否可以互换。前两种方法在我工作的地方正在使用,据我所知,它们正在完成同样的事情。
编辑:当我第一次问这个问题时,我在示例中使用了从PHP手册中复制的一些代码,其中包含mysql命令。因为我没有使用mysql,所以我决定重写这个问题。
方法1-使用!is_resource,它比方法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');
}谢谢
发布于 2017-02-21 04:12:23
mysql_connect将仅返回资源或false。
实际上,!$db_link和$db_link === false是相同的。编辑:“在这个实例中。”它们实际上并不相同,因为===执行严格的类型检查,但出于本文讨论的目的,它们实际上是相同的。
is_resource实际上也是一样的,只是开销稍微多一点,但还不足以关注这样的微优化。
您不应该使用mysql_函数编写新代码。它已经被弃用了很长一段时间。替代方案是mysqli_。
发布于 2017-02-21 04:22:37
如果您知道您正在处理的可能值是什么,并且这些值可以通过简单的布尔测试清楚地区分出来,那么这就足够了。mysql_connect返回资源或布尔型false。布尔型false永远是假的,资源永远是真的,因此if (!$db_link)是一个完全足够和简洁的测试。在给定两个可能的$db_link值的情况下,这不会失败。
=== false对布尔比较更加明确,但这是不必要的。它不会增加任何东西,除了冗长。
is_resource也适用于您的目的,并且以另一种方式更加明确,但也是不必要的。它不会匹配任何额外的情况,简单的布尔比较在这里是不会的。
https://stackoverflow.com/questions/42353121
复制相似问题