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

PHP 變數類型系統深度解析:類型轉換、強制轉型與字串轉數字規則

     編輯:PHP 綜合知識

動態類型與類型推斷

PHP 變數無需宣告類型,由賦值內容決定:

<?php
$foo = "0";   // string
$foo++;       // string "1" (字串遞增)
$foo += 1;    // int 2
$foo = $foo + 1.3; // float 3.3
$foo = 5 + "10 Little Piggies"; // int 15
$foo = 5 + "10 Small Pigs";     // int 15

運算子與類型提升

  • + 算術加法:任一操作數為 float → 雙方提升為 float,結果為 float;否則視為 int
  • . 字串串接:雙方轉為字串
  • == 鬆散比較:型別轉換後比較 (易出錯)
  • === 嚴格比較:型別與值皆相同

類型強制轉換

<?php
$foo = 10;
$bar = (int) $foo;      // int
$bar = (integer) $foo;  // 同義
$bar = (bool) $foo;     // bool
$bar = (float) $foo;    // float (同 double, real)
$bar = (string) $foo;   // string
$bar = (array) $foo;    // array
$bar = (object) $foo;   // object (stdClass)
$bar = (unset) $foo;    // null (PHP 7.2+)

括號內允許空格:( int ) 等同 (int)。

字串轉數字規則

  1. 若含 .、e、E → 解析為 float
  2. 否則解析為 int
  3. 從字串開頭提取有效數字字符 (可含正負號、小數點、指數)
  4. 無有效開頭 → 0
<?php
1 + "10.5"        // float 11.5
1 + "-1.3e3"      // float -1299
1 + "bob-1.3e3"   // int 1 (bob 非數字開頭)
1 + "bob3"        // int 1
1 + "10 Small Pigs" // int 11
1 + "10 Little Piggies" // int 11 (含 e 但非指數格式)

類型檢測函數

<?php
gettype($var)        // 回傳類型字串
is_int($var)         // 別名 is_long, is_integer
is_float($var)       // 別名 is_double, is_real
is_string($var)
is_array($var)
is_object($var)
is_bool($var)
is_null($var)
is_numeric($var)     // 數字或數字字串
is_scalar($var)      // int/float/string/bool
is_callable($var)
is_iterable($var)    // PHP 7.1+

資源類型

resource 為外部資源控制代碼 (檔案、資料庫連線、圖像等),不可直接操作,僅傳遞給對應函數。

最佳實踐建議

  1. 關鍵邏輯使用 === 嚴格比較
  2. 函數參數/回傳加上類型宣告 (PHP 7+): function add(int $a, int $b): int
  3. 嚴格模式:declare(strict_types=1); 檔案頂部
  4. 避免依賴隱性轉換,明確轉型意圖更清晰
  5. 字串轉數字優先用 intval()/floatval()/filter_var() 語義明確
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved