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

PHP 數據類型轉換完全指南:自動轉換、強制轉換與函數轉換

     編輯:PHP 綜合知識

PHP 類型系統概覽

PHP 是弱類型語言,變量類型由上下文自動推斷,支持 8 種基本類型:

  • 標量類型:int、float、string、bool
  • 復合類型:array、object
  • 特殊類型:resource、null

自動類型轉換(類型推斷)

運算符會根據操作數自動轉換類型:

<?php
// 算術運算:任一操作數為 float,結果為 float
var_dump(10 + 3.14);      // float(13.14)
var_dump(10 + "3.14");    // float(13.14) 字符串轉數字
var_dump(10 + "3abc");    // int(13)     字符串開頭數字部分
var_dump(10 + "abc");     // int(10)     無數字開頭視為 0

// 字符串連接:. 操作數自動轉字符串
var_dump(10 . 20);        // string(4) "1020"
var_dump("age: " . 25);   // string(6) "age: 25"

// 邏輯判斷:自動轉 bool
var_dump((bool)0);        // false
var_dump((bool)"");       // false
var_dump((bool)"0");      // false  注意:"0" 為 false
var_dump((bool)"false");  // true   非空字符串為 true
var_dump((bool)[]);       // false  空數組為 false
?>

強制類型轉換(Casting)

語法:(目標類型)$variable,允許類型:

類型關鍵字別名目標類型
(int)(integer)整型
(float)(double), (real)浮點型
(string)字符串
(bool)(boolean)布爾型
(array)數組
(object)對象
(unset)NULL (PHP 5+)
(binary)二進制字符串 (PHP 6/7+ b"" 語法)
<?php
$val = "3.14abc";
var_dump((int)$val);    // int(3)
var_dump((float)$val);  // float(3.14)
var_dump((bool)$val);   // bool(true)  非空字符串
var_dump((array)$val);  // array(1) { [0]=> string(7) "3.14abc" }
var_dump((object)$val); // object(stdClass)#1 { ["scalar"]=> string(7) "3.14abc" }

// 二進制字符串 (PHP 5.2.1+)
$bin = (binary) $str;   // 等同於 b"binary string"
?>

專用轉換函數

函數說明等價寫法
intval($var, $base=10)轉整型,支持進制(2-36)(int)$var
floatval($var)轉浮點型(float)$var
strval($var)轉字符串(string)$var
boolval($var)轉布爾型 (PHP 5.5+)(bool)$var
settype($var, $type)**就地修改**變量類型,返回 bool無直接等價
<?php
$str = "123.9abc";
$int = intval($str);      // 123
$float = floatval($str);  // 123.9
$str2 = strval($float);   // "123.9"

$num = 12.8;
$ok = settype($num, "int"); // $num 變為 12, $ok = true
var_dump($num, $ok);
?>

類型檢測函數

判斷類型請使用 is_* 系列,**不要用 gettype() 比較**:

<?php
$var = 123;
is_int($var);       // true
is_float($var);     // false
is_numeric($var);   // true  (純數字字符串也返回 true)
is_string($var);    // false
is_array($var);     // false
is_bool($var);      // false
is_null($var);      // false
is_object($var);    // false

// gettype() 返回規範名稱
gettype(3.14);      // "double"  歷史原因 float 返回 double
gettype([]);        // "array"
gettype(null);      // "NULL"
?>

常見陷阱與最佳實踐

  1. "0" 與 "false" 字符串轉 bool 為 false:表單提交的 "0"、"false" 經 (bool) 為 false,需用 filter_var($v, FILTER_VALIDATE_BOOLEAN) 正確解析。
  2. 浮點數精度:避免直接比較浮點數,使用 abs($a-$b) < EPSILON 或 BCMath 高精度函數。
  3. 數組轉字符串:直接 echo $arr 觸發 Notice 並輸出 "Array",應用 implode()、json_encode()、var_export()。
  4. 資源類型:resource 無法直接轉換,需用對應函數釋放或獲取信息(如 stream_get_meta_data())。
  5. 嚴格模式:PHP 7+ 函數聲明可用 declare(strict_types=1); 強制參數類型,減少隱式轉換 Bug。

理解 PHP 類型轉換規則,善用強制轉換與檢測函數,能編寫更健壯、可預測的代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved