PHP 提供豐富的型別檢測函數,本文整理 is_* 系列函數的用法、別名關係與實戰範例,幫助開發者精準判斷變數型別。
| 函數 | 檢測型別 | 別名/備註 |
|---|---|---|
| is_bool() | 布林值 | — |
| is_int() / is_integer() / is_long() | 整數 | 三者為別名 |
| is_float() / is_double() / is_real() | 浮點數 | 三者為別名 |
| is_numeric() | 數字或數字字串 | 含 "123", "1.23", "0xFF" |
| is_string() | 字串 | — |
| is_array() | 陣列 | — |
| is_object() | 物件 | — |
| is_null() | NULL | — |
| is_scalar() | 純量(整數、浮點、字串、布林) | 不含陣列/物件/資源 |
| is_callable() | 可呼叫 | 函數名、閉包、實作 __invoke 的物件 |
| is_resource() | 資源型別 | 檔案句柄、DB 連線等 |
<?php
// 整數判斷
$pageCount = 2234;
if (is_integer($pageCount)) echo "$pageCount is an integer<br>";
// 浮點數判斷
$temp = 15.23;
if (is_double($temp)) echo "Temperature is a double<br>";
// 物件判斷
class Widget { public $name; public $length; }
$thing = new Widget();
if (is_object($thing)) echo "thing is an object<br>";
// 字串判斷
$greeting = "www.example.com";
if (is_string($greeting)) echo "Greeting is a string<br>";
// 數字/數字字串判斷
$val = "123";
if (is_numeric($val)) echo "這是個真正的數字字串<br>";
?>
is_numeric("123") 為 true,is_int("123") 為 false(字串非整數型別)is_float(1.0) 為 true,但 1.0 === 1 為 true(PHP 自動轉型)is_object() 僅檢測是否為物件實例,不檢測類別繼承關係,請用 instanceofis_array() 為最準確判斷,isset($arr[0]) 可能誤判<?php
var_dump(gettype($val)); // 回傳型別字串:integer, double, string, array, object...
var_dump(get_debug_type($val)); // PHP 8+ 更精確:int, float, string, array, class Name...
?>
建議:條件判斷用 is_*,除錯輸出用 get_debug_type()。