首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 判斷變數型別的完整函式庫:is_* 系列函式速查

     編輯:PHP 相關知識

PHP 判斷變數型別的完整函式庫:is_* 系列函式速查

PHP 提供一組 is_* 開頭的內建函式,用於檢測變數是否屬於特定型別。這些函式回傳 bool,是條件判斷、資料驗證、除錯輸出的基礎工具。

型別檢測函式完整列表

函式檢測型別備註
is_array()陣列包含索引陣列與關聯陣列
is_bool()布林值僅 true/false
is_callable()可呼叫型別函式名字串、閉包、實作 __invoke 的物件、陣列 [$obj, 'method']
is_double() / is_float() / is_real()浮點數三個函式別名,is_real 含整數與浮點數
is_int() / is_integer() / is_long()整數三個函式別名
is_null()Null僅 null
is_numeric()數值或數值字串"123", "12.3", "+0xFF" 皆回傳 true
is_object()物件任何類別實例
is_resource()資源型別如 fopen()、curl_init()、mysqli_connect() 回傳值
is_scalar()純量型別int, float, string, bool (不含陣列、物件、資源、null)
is_string()字串
is_iterable()可迭代PHP 7.1+,陣列或實作 Traversable
is_countable()可計數PHP 7.3+,陣列或實作 Countable

使用範例

<?php
$sum = 6;
var_dump(is_string($sum)); // bool(false)
var_dump(is_int($sum));    // bool(true)
var_dump(is_numeric("123")); // bool(true)
var_dump(is_numeric("12.3abc")); // bool(false)

// 實用封裝:取得型別名稱
function getTypeName($var) {
    if (is_null($var)) return 'null';
    if (is_bool($var)) return 'bool';
    if (is_int($var)) return 'int';
    if (is_float($var)) return 'float';
    if (is_string($var)) return 'string';
    if (is_array($var)) return 'array';
    if (is_object($var)) return 'object (' . get_class($var) . ')';
    if (is_resource($var)) return 'resource (' . get_resource_type($var) . ')';
    return 'unknown';
}

echo getTypeName([]);        // array
echo getTypeName(new DateTime()); // object (DateTime)

進階:gettype() vs get_debug_type() (PHP 8+)

  • gettype($var):回傳字串 "integer", "double", "array"... 舊版相容。
  • get_debug_type($var) (PHP 8+):回傳更符合現代型別宣告的名稱,如 "int", "float", "array", "MyClass", "Closure",適合除錯訊息。

常見誤區

  • is_numeric() 會回傳 true 給十六進位字串:is_numeric("0xFF") === true,但 is_int("0xFF") === false。
  • NaN 與 Infinity:is_float(NAN) === true,is_finite() (PHP 7.2+) 可區分有限數值。
  • 物件偽裝陣列:實作 ArrayAccess 的物件 is_array() === false,但可直接 foreach 遍歷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved