
- PHP 教程
- PHP - 首頁
- PHP - 簡介
- PHP - 安裝
- PHP - 歷史
- PHP - 特性
- PHP - 語法
- PHP - Hello World
- PHP - 註釋
- PHP - 變數
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 變數
- PHP - 常量
- PHP - 魔術常量
- PHP - 資料型別
- PHP - 型別轉換
- PHP - 型別混雜
- PHP - 字串
- PHP - 布林值
- PHP - 整數
- PHP - 檔案與 I/O
- PHP - 數學函式
- PHP - Heredoc & Nowdoc
- PHP - 複合型別
- PHP - 檔案包含
- PHP - 日期與時間
- PHP - 標量型別宣告
- PHP - 返回型別宣告
- PHP 運算子
- PHP - 運算子
- PHP - 算術運算子
- PHP - 比較運算子
- PHP - 邏輯運算子
- PHP - 賦值運算子
- PHP - 字串運算子
- PHP - 陣列運算子
- PHP - 條件運算子
- PHP - 展開運算子
- PHP - 空值合併運算子
- PHP - 比較符
- PHP 控制語句
- PHP - 決策
- PHP - If…Else 語句
- PHP - Switch 語句
- PHP - 迴圈型別
- PHP - For 迴圈
- PHP - Foreach 迴圈
- PHP - While 迴圈
- PHP - Do…While 迴圈
- PHP - Break 語句
- PHP - Continue 語句
- PHP 函式
- PHP - 函式
- PHP - 函式引數
- PHP - 按值傳遞
- PHP - 按引用傳遞
- PHP - 預設引數
- PHP - 具名引數
- PHP - 可變引數
- PHP - 返回值
- PHP - 傳遞函式
- PHP - 遞迴函式
- PHP - 型別提示
- PHP - 變數作用域
- PHP - 嚴格型別
- PHP - 匿名函式
- PHP - 箭頭函式
- PHP - 可變函式
- PHP - 區域性變數
- PHP - 全域性變數
- PHP 超全域性變數
- PHP - 超全域性變數
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 檔案處理
- PHP - 檔案處理
- PHP - 開啟檔案
- PHP - 讀取檔案
- PHP - 寫入檔案
- PHP - 檔案是否存在
- PHP - 下載檔案
- PHP - 複製檔案
- PHP - 追加檔案
- PHP - 刪除檔案
- PHP - 處理 CSV 檔案
- PHP - 檔案許可權
- PHP - 建立目錄
- PHP - 列出檔案
- 面向物件 PHP
- PHP - 面向物件程式設計
- PHP - 類和物件
- PHP - 建構函式和解構函式
- PHP - 訪問修飾符
- PHP - 繼承
- PHP - 類常量
- PHP - 抽象類
- PHP - 介面
- PHP - 特性
- PHP - 靜態方法
- PHP - 靜態屬性
- PHP - 名稱空間
- PHP - 物件迭代
- PHP - 封裝
- PHP - final 關鍵字
- PHP - 過載
- PHP - 克隆物件
- PHP - 匿名類
- PHP Web 開發
- PHP - Web 概念
- PHP - 表單處理
- PHP - 表單驗證
- PHP - 表單郵件/URL
- PHP - 完整表單
- PHP - 檔案包含
- PHP - GET & POST
- PHP - 檔案上傳
- PHP - Cookie
- PHP - Session
- PHP - Session 選項
- PHP - 傳送郵件
- PHP - 淨化輸入
- PHP - Post-Redirect-Get (PRG)
- PHP - 快閃記憶體訊息
- PHP 高階
- PHP - MySQL
- PHP.INI 檔案配置
- PHP - 陣列解構
- PHP - 編碼規範
- PHP - 正則表示式
- PHP - 錯誤處理
- PHP - Try…Catch
- PHP - Bug 除錯
- PHP - 針對 C 開發人員
- PHP - 針對 PERL 開發人員
- PHP - 框架
- PHP - Core PHP 與框架
- PHP - 設計模式
- PHP - 過濾器
- PHP - JSON
- PHP - 異常
- PHP - 特殊型別
- PHP - 雜湊
- PHP - 加密
- PHP - is_null() 函式
- PHP - 系統呼叫
- PHP - HTTP 身份驗證
- PHP - 交換變數
- PHP - Closure::call()
- PHP - 過濾後的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 期望值
- PHP - use 語句
- PHP - 整數除法
- PHP - 已棄用的特性
- PHP - 已移除的擴充套件和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 程序
- PHP - PDO 擴充套件
- PHP - 內建函式
- PHP 有用資源
- PHP - 速查表
- PHP - 問答
- PHP - 快速指南
- PHP - 線上編譯器
- PHP - 有用資源
- PHP - 討論
PHP - 型別轉換
“型別轉換”指的是將一種資料型別轉換為另一種資料型別。由於 PHP 是一種弱型別語言,解析器在執行某些操作時會將某些資料型別強制轉換為其他型別。例如,如果一個包含數字的字串是加法運算中的運算元之一,則該字串將轉換為整數。
隱式型別轉換
這是一個強制或隱式型別轉換的示例:
<?php $a = 10; $b = '20'; $c = $a+$b; echo "c = " . $c; ?>
在這種情況下,$b 是一個字串變數,被強制轉換為整數以進行加法運算。它將產生以下輸出:
c = 30
讓我們來看另一個例子。這裡,整數變數 $a 被轉換為字串,以便與字串變數連線。
<?php $a = 10; $b = '20'; $c = $a.$b; echo "c = " . $c; ?>
它將產生以下輸出:
c = 1020
除了這種強制型別轉換之外,還有其他方法可以顯式地將一種資料型別轉換為另一種資料型別。您可以為此目的使用 PHP 的型別轉換運算子或型別轉換函式。
型別轉換運算子
要將一種型別的表示式轉換為另一種型別,需要在表示式之前用括號括起來目標資料型別。
$var = (type)expr;
PHP 中的一些型別轉換運算子有:
(int) 或 (integer) 轉換為整數
(bool) 或 (boolean) 轉換為布林值
(float) 或 (double) 或 (real) 轉換為浮點數
(string) 轉換為字串
(array) 轉換為陣列
(object) 轉換為物件
轉換為整數
您可以輕鬆地將浮點值轉換為整數。請看下面的示例:
<?php $a = 9.99; $b = (int)$a; var_dump($b); ?>
它將產生以下輸出:
int(9)
請注意,浮點值不會四捨五入到最接近的整數;而是隻返回整數部分。
字串到整數轉換
(int) 運算子也用於將字串轉換為整數。如果字串只包含數字,則轉換很簡單。
<?php $a = "99"; $b = (int)$a; var_dump($b); ?>
這裡,您將獲得以下輸出:
int(99)
即使字串包含浮點數,(int) 運算子也只返回整數部分。
現在讓我們來看另一個例子來理解一個特例。如果字串是字母數字的,則使用 (int) 進行轉換的方式不同。
如果字串以數字開頭,後面跟著非數字字元,則只考慮初始數字。
如果字串以非數字字元開頭,而數字在中間,則轉換運算子返回“0”。
請看下面的示例:
<?php $a = "10 Rs."; $b = (int)$a; var_dump($b); $a = "$100"; $b = (int)$a; var_dump($b); ?>
它將產生以下輸出:
int(10) int(0)
轉換為浮點型別
您可以使用 (float) 或 (double) 轉換運算子將變數或表示式顯式轉換為浮點數。
<?php $a = 100; $b = (double)$a; var_dump($b); ?>
它將產生以下輸出:
float(100)
包含任何有效數字表示的字串都可以使用轉換運算子轉換為浮點型別。
<?php $a = "100"; $b = (double)$a; var_dump($b); $a = "9.99"; $b = (float)$a; var_dump($b); ?>
這裡,您將獲得以下輸出:
float(100) float(9.99)
即使字串包含浮點數的科學計數法,也會轉換為浮點數。請看下面的示例:
<?php $a = "1.23E01"; $b = (double)$a; var_dump($b); $a = "5.5E-5"; $b = (float)$a; var_dump($b); ?>
它將產生以下輸出:
float(12.3) float(5.5E-5)
浮點數後面的所有非數字字元都將被忽略。類似地,如果字串以任何非數字字元開頭,則字串將轉換為“0”。請看下面的示例:
<?php $a = "295.95 only"; $b = (double)$a; var_dump($b); $a = "$2.50"; $b = (float)$a; var_dump($b); ?>
它將產生以下輸出:
float(295.95) float(0)
轉換為字串型別
透過使用轉換運算子,任何計算結果為浮點數或整數的表示式都可以轉換為字串型別。以下是一些示例:
<?php $a = 100; $b = (string)$a; var_dump($b); $x = 55.50; $y = (string)$x; var_dump($y); ?>
您將獲得以下輸出:
string(3) "100" string(4) "55.5"
轉換為布林型別
任何非零數字(整數或浮點數)都將使用 (bool) 運算子轉換為 true。計算結果為“0”的表示式返回 false。字串始終轉換為 true。
請看下面的示例:
<?php $a = 100; $b = (bool)$a; $x = 0; $y = (bool)$x; $m = "Hello"; $n = (bool)$m; var_dump($b); var_dump($y); var_dump($n); ?>
它將產生以下輸出:
bool(true) bool(false) bool(true)
型別轉換函式
PHP 包含以下用於執行型別轉換的內建函式:
intval()
floatval()
strval()
讓我們詳細討論這些內建函式。
intval() 函式
此函式獲取變數的整數值。
intval(mixed $value, int $base = 10): int
$base 引數預設為 10,這意味著該值將轉換為十進位制數。
如果該值是浮點數,則 intval() 函式返回一個整數,丟棄小數部分。
數字的字串表示形式返回相應的整數,忽略小數部分(如有)。
如果值為包含有效八進位制數的字串且基數為 8,則 intval() 函式返回相應的八進位制數。
當基數為“0”時,值的轉換基於字元字首進行。
如果值以 0X 或 0x 開頭,則返回十六進位制數。
如果值以 0B 或 0b 開頭,則返回二進位制數。
如果值以 0 開頭,則函式返回八進位制數。
intval() 函式對於 true 布林值返回 1,對於 false 布林值返回 0。
示例
以下示例演示了 intval() 函式的工作方式:
<?php echo intval(42). PHP_EOL; echo intval(4.2). PHP_EOL; echo intval('42') . PHP_EOL; echo intval(042) . PHP_EOL; # 0ctal number echo intval('042', 0) . PHP_EOL; # 0ctal number echo intval('42', 8) . PHP_EOL; # octal echo intval(0x1A) . PHP_EOL; # Hexadecimal echo intval('0x1A', 16) . PHP_EOL; # Hexadecimal echo intval('0x1A', 0) . PHP_EOL; # Hexadecimal echo intval(false) . PHP_EOL; echo intval(true) . PHP_EOL; ?>
它將產生以下輸出:
42 4 42 34 34 34 26 26 26 0 1
floatval() 函式
floatval() 函式獲取表示式的浮點值。
floatval(mixed $value): float
值可以是任何標量變數。包含非數字字元的字串返回“0”。包含數字表示或以數字表示作為起始子字串的字串返回相應的數字。以下示例演示了 floatval() 函式的工作方式:
<?php echo floatval(42). PHP_EOL; echo floatval(4.2). PHP_EOL; echo floatval('42') . PHP_EOL; echo floatval('99.90 Rs') . PHP_EOL; echo floatval('$100.50') . PHP_EOL; echo floatval('ABC123!@#') . PHP_EOL; echo (true) . PHP_EOL; ; echo (false) . PHP_EOL; ?>
它將產生以下輸出:
42 4.2 42 99.9 0 0 1
doubleval() 函式是 floatval() 函式的別名,因此返回類似的結果。
strval() 函式
strval() 函式獲取變數的字串值。此函式不對返回的值進行任何格式化。
strval(mixed $value): string
要轉換為字串的值可以是任何標量型別、null 或實現 __toString() 方法的物件。請檢視以下示例:
<?php echo strval(42). PHP_EOL; echo strval(4.2). PHP_EOL; echo strval(4.2E5) . PHP_EOL; echo strval(NULL) . PHP_EOL; echo (true) . PHP_EOL; echo (false) . PHP_EOL; ?>
它將產生以下輸出:
42 4.2 420000 1
以下示例定義了一個實現__toString() 方法的類。
<?php class myclass { public function __toString() { return __CLASS__; } } echo strval(new myclass); ?>
這裡,您將獲得以下輸出:
myclass