类型juggling - Ressource to boolean

时间:2014-01-22 13:24:41

标签: php type-conversion

我偶然发现了这段代码(由别人写的):

$result = do_stuff(); //returns false on failure, and mysql resource on success

return $result !== false;

如果我做对了,它会将$result强制转换为布尔值并返回它。

我们怎样才能证明使用$result !== false代替(bool)$result?前者更有效吗?

1 个答案:

答案 0 :(得分:1)

我不确定你的意思是什么。根据{{​​1}}的结果,转换为bool可能会做同样的事情,但实际上是其他东西并暗示其他东西。

例:
如果你有do_stuff()作为returnvalue,则转换为bool会使你的函数返回false,但0将返回true。根据你的评论,这可能不是你在这里的用例,但暗示着它。

所以你在这里说的是“如果0 !== false正好是$result则返回false,否则总是返回true”,而转换为bool会在false的任何值上返回false是'假的'。

我的理由是这更清楚:你暗示结果要么是真的$result,要么你实际上认为它是真的。