PHP 擁有豐富的型別系統,分為標量、複合、特殊三大類,共 8 種基本型別。理解型別特性與轉換規則是編寫健壯代碼的前提。
| 分類 | 型別 | 關鍵字 | 說明 |
|---|---|---|---|
| 標量類型 | 整數 | integer / int | 整數值,支援 10/8/16 進制 |
| 浮點數 | float / double | 小數、科學記號 | |
| 布林值 | boolean / bool | true / false | |
| 字串 | string | 文字序列,無長度限制 | |
| 複合類型 | 陣列 | array | 有序映射,鍵值對集合 |
| 物件 | object | 類實例,封裝屬性與方法 | |
| 特殊類型 | 空值 | null | 無值狀態 |
| 資源 | resource | 外部資源句柄(檔案、資料庫連線等) |
<?php
$a = 10; // 十進制
$a = 0123; // 八進制(0 開頭)= 83
$a = 0x1A; // 十六進制(0x 開頭)= 26
echo PHP_INT_SIZE; // 整數位元組數(4 或 8)
var_dump($a); // 型別與值檢視
echo PHP_INT_MAX; // 最大整數值
?>
// 八進制 0123 → 十進制
// 3×8⁰ + 2×8¹ + 1×8² = 3 + 16 + 64 = 83
// 十六進制 0x1A → 十進制
// A=10 → 10×16⁰ + 1×16¹ = 10 + 16 = 26
1.2e3 = 1200floor((0.1+0.7)*10) 可能得 7 而非 8以下值在布林語境下為 false:false、0、0.0、""、"0"、[]、null、未定義變量。其餘皆為 true。
.(非 +)memory_limit 限制)var_dump($var); // 詳細型別資訊
gettype($var); // 取得型別字串
is_int($var); is_array($var); // 型別判斷函數
(int)$var; (string)$var; // 強制轉型
settype($var, 'integer'); // 就地轉型
掌握型別系統細節,能有效避免隱性轉換導致的邏輯錯誤與安全漏洞。