WTF 系列 – PHP 的 MAP 鍵值型態問題

在 PHP 裡面,可以用儲存鍵值組的 MAP 是個很實用的型別,值的型態可以是任意型態,但鍵的型態只能是 String 和 Int (The key can either be an integer or a string. The value can be of any type.)

以下是一些 PHP 處理 “鍵” 自動轉型的狀況分析:

當是 String 型態,鍵為 “8” 的時候,會被轉型為 Int 8 ,但如果是 “08” 則依然會被當做 String 處理。
當 Float 型態的時候,會被自動轉型成為 Int ,例如 8.7 會被捨去小數點,變成 8 。
當 Bool 型態的時候,一樣會被轉型成為 Int , True 被轉型成 1 而 False 轉型成 0 。
當 Null 型態的時候,會被當成 String ,以 “” (空字串) 表示。
而 Array 和 Object 不能被當成鍵。

另外,新的鍵會覆寫舊的鍵,自動轉型之後的鍵如果和之前的鍵有重複,也會把之前的那組覆寫掉。

ref: PHP: Arrays

所以在使用 MAP 的時候要非常小心被鍵值組被覆寫的問題。

Posted in Programming
One comment on “WTF 系列 – PHP 的 MAP 鍵值型態問題
  1. sotom says:

    難得有我大概看得懂的 code 心得 XD

1 Pings/Trackbacks for "WTF 系列 – PHP 的 MAP 鍵值型態問題"
  1. […] 非常愛幫使用者默默地做型別轉換,我在 WTF 系列 – PHP 的 MAP 鍵值型態問題 裡面有提到一些對於 MAP […]

Leave a Reply

Your email address will not be published.