WTF系列 – PHP 的 Type Casting 以及 Comparison Operators

PHP 會幫使用者默默地做型別轉換 (Type Casting) ,我在 WTF 系列 – PHP 的 MAP 鍵值型態問題 裡面有提到一些對於 MAP 鍵的自動型別轉換問題。

以下多補充一些 PHP 在型別轉換上會讓人感到困惑的的設計,首先看這個例子:

接著再來一些字串和整數比對的轉換:

另外使用比較運算子也會有問題

結論:在 PHP 的世界裡面 == 是危險的,而 >= 和 <= 是不保險的,你只能用 === 或是 !== ,而且 PHP 沒有 >== 和 <== 。 ref: Comparison Operators

補充一下,在上述的 PHP 官方文件裡面,自動型別轉換叫做 type juggling. 實在是非常自我感覺良好的一種稱呼…

4 thoughts on “WTF系列 – PHP 的 Type Casting 以及 Comparison Operators”

    1. 當然 dynamic language 幾乎都具有 weak typing 的特性

      但這個問題主要在於 PHP 在比較運算子上面 “自動” 的型別轉換,缺點實在太明顯了。

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.