2014-01-22 35 views
0

我在這段代碼跌跌撞撞(別人寫的):類型雜耍 - 的ressource爲布爾

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

return $result !== false; 

如果我得到它的權利,它蒙上$result到布爾並將其返回。

我們如何證明$result !== false的使用取代(bool)$result?前者更有效率嗎?

+0

我覺得'$ result!== false'比'(bool)$ result'更可讀。 –

+3

因爲資源不是簡單的真或假,所以這裏的代碼是主動類型檢查布爾值以及false值 –

+0

@MarkBaker從[php doc](http://php.net/manual/en/language .types.boolean.php)'其他每個值都被認爲是TRUE(包括任何資源)。「一個資源在投射時被認爲是真的,對嗎? – Bigood

回答

1

我不確定你說的是什麼意思。根據do_stuff()的結果,鑄造到布爾可能會做同樣的事情,但實際上是其他事情,並暗示着其他事情。

例:
如果你有0作爲返回值,澆注到bool將使你的函數返回false,但0 !== false將返回true。根據你的評論,這可能不是你在這裏的用例,但它是隱含的。

那麼,你說這裏是「返回false,如果$result正是false,否則總是返回真值」,而鑄造布爾將會對$result任何值是「假十歲上下的」返回false。

我的理由是這更清楚:你暗示結果不是真的就是false,或者你確實認爲它是真的。