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

PHP 八大數據類型完整速查與類型判斷最佳實踐

     編輯:PHP 相關知識

PHP 八大原始類型

分類類型關鍵字說明
標量類型字符串string字節序列,無長度限制
整數int / integer平台相關長度 (通常 64 位)
浮點數float / doubleIEEE 754 雙精度
布爾bool / booleantrue / false
複合類型數組array有序映射,鍵可為 int/string
對象object類實例
特殊類型資源resource外部資源句柄 (文件、DB 連線等)
空值null無值,未初始化變量默認

類型檢測函數對比

函數返回值適用場景注意事項
gettype($var)類型字符串調試輸出float 返回 "double";非邏輯判斷首選
var_dump($var)輸出類型+值開發調試包含長度、引用標記、遞歸保護
is_int($var) 等 is_* 系列bool邏輯分支判斷不觸發類型轉換,效能最佳
get_debug_type($var) (PHP 8+)更精確類型名現代調試區分 class 名、資源類型、可調用對象

實戰代碼示例

<?php
$vars = [
    'str'  => 'hello',
    'int'  => 42,
    'float'=> 3.14,
    'bool' => true,
    'arr'  => [1,2,3],
    'obj'  => new stdClass(),
    'res'  => fopen('php://memory', 'r'),
    'null' => null,
];

echo "=== gettype() ===\n";
foreach ($vars as $k => $v) {
    echo "$k: " . gettype($v) . "\n";
}

echo "\n=== is_* 系列判斷 ===\n";
$test = 123;
if (is_int($test)) {
    $test += 4; // 安全執行加法
}
echo "Result: $test\n"; // 127

// 類型轉換陷阱
var_dump((int)'123abc');   // int(123) - 截取前導數字
var_dump((bool)[]);        // bool(false) - 空數組為 false
var_dump((string)123.45);  // string(6) "123.45"

類型聲明 (PHP 7+)

// 參數與返回類型聲明
function add(int $a, int $b): int {
    return $a + $b;
}

// 嚴格模式 (文件頂部宣告)
declare(strict_types=1);
add(1.5, 2); // TypeError: Argument must be int, float given

// 可空類型 (PHP 7.1+)
function find(int $id): ?User { /* ... */ }

// 聯合類型 (PHP 8.0+)
function format(int|float $num): string { /* ... */ }

// mixed 類型 (PHP 8.0+)
function dump(mixed $var): void { var_dump($var); }

最佳實踐總結

  1. 判斷邏輯用 is_*:is_int()、is_array()、is_callable() 等,語義清晰、無副作用
  2. 調試用 var_dump() / get_debug_type()
  3. 函數簽名加類型聲明:提升可讀性、IDE 支援、運行時檢查
  4. 嚴格模式 declare(strict_types=1):新專案強烈建議啟用,避免隱式轉換 Bug
  5. 資源類型:操作完及時 fclose()、mysqli_close() 釋放
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved