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

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

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

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

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

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

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

Posted in Programming
4 comments on “WTF系列 – PHP 的 Type Casting 以及 Comparison Operators
  1. sotom says:

    看到後來都亂掉了…囧

  2. 路人甲 says:

    畢竟當初設計就是以動態語言為目標 囧

    • roga says:

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

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

Leave a Reply

Your email address will not be published.