gettype()string gettype(mixed $var) 回傳變數型別字串,可能值:"boolean"、"integer"、"double"(歷史原因實為 float)、"string"、"array"、"object"、"resource"、"NULL"、"unknown type"。
gettype() 做型別判斷的原因is_* 函數族群,語意明確且效能更好myGetType() 封裝 is_* 函數<?php
function myGetType($var) {
if (is_array($var)) return "array";
if (is_bool($var)) return "boolean";
if (is_float($var)) return "float";
if (is_int($var)) return "integer";
if (is_null($var)) return "NULL";
if (is_numeric($var)) return "numeric";
if (is_object($var)) return "object";
if (is_resource($var)) return "resource";
if (is_string($var)) return "string";
return "unknown type";
}
?>
| 函數 | 檢測目標 | 備註 |
|---|---|---|
is_array() | 陣列 | |
is_bool() | 布林值 | |
is_float() / is_double() / is_real() | 浮點數 | 三者同義 |
is_int() / is_integer() / is_long() | 整數 | 三者同義 |
is_string() | 字串 | |
is_object() | 物件 | |
is_null() | NULL 值 | |
is_numeric() | 數值或數值字串 | 如 "123"、"1.23" 也回傳 true |
is_scalar() | 純量類型 | int/float/string/bool |
is_callable() | 可呼叫結構 | 函數、閉包、實作 __invoke 的物件 |
is_iterable() | 可迭代 | PHP 7.1+,陣列或實作 Traversable |
is_resource() | 資源型別 | 如資料庫連線、檔案控制代碼 |
<?php
// 取得類別名稱
if (is_object($var)) {
echo get_class($var); // 回傳類別名稱
}
// 型別提示與 instanceof
if ($var instanceof SomeClass) { ... }
?>
<?php
$fp = fopen("test.txt", "r");
var_dump(get_resource_type($fp)); // "stream"
?>
is_* 函數,避免 gettype() === 'string' 這類字串比較get_debug_type() 取得更精確的型別描述(適用除錯)declare(strict_types=1)) 下型別檢查更嚴謹