HOWTO · PHP
如何在 PHP 中將字串轉換為數字
本文介紹如何在 PHP 中將字串轉換為數字,涵蓋 `intval()` 函式、`settype()` 函式與明確型別轉型。
本頁內容
在 PHP 中,若要將數字字串轉換為整數,可使用 (int) 轉型或呼叫 intval();若要轉換為浮點數,則使用 (float) 或 floatval()。這些轉型與函式會產生轉換後的值,同時保留原始字串。若要直接變更既有變數的型別,請使用 settype()。選擇哪種方式,取決於你需要簡潔的運算式、具名轉換函式,或直接修改變數本身。
在 PHP 中使用明確型別轉型將字串轉換為數字
明確轉型會依照括號中的型別建立轉換後的值。使用 (int) 取得整數,或使用 (float) 取得浮點數。當使用值的位置已清楚指定所需型別時,這是直接的轉換方式。以下獨立範例各轉換一個整數與浮點數形式的數字字串:
<?php
$integer = (int) "10";
$decimal = (float) "8.1";
echo $integer, "\n", $decimal, "\n";
10
8.1
如範例所示,你可以將轉型運算式指定給新變數,也可以在任何接受運算式的位置使用它。指定給 $integer 或 $decimal 不會變更原始字串常值或來源變數;若有意取代原值,也可以沿用同一個變數名稱。結果需要是整數時選用 (int);需要保留小數部分時選用 (float)。這些範例使用的是數字字串,並未說明轉型如何處理其他格式的輸入。
在 PHP 中使用 intval() 函式將字串轉換為數字
intval() 函式會傳回整數值。若要取得浮點數,請使用 floatval()。這些具名函式能在運算式中清楚表達預期的轉換方式;若比轉型語法更容易讓程式碼意圖一目瞭然,也可以選用它們。兩者都會傳回轉換後的值,因此將結果存入另一個變數,就能保留原始字串:
<?php
$integer = intval("53");
$decimal = floatval("25.3");
echo $integer, "\n", $decimal, "\n";
53
25.3
整數轉換請選用 intval(),浮點數轉換則選用 floatval()。轉型語法與對應函式之間的選擇,主要取決於哪種寫法更能清楚傳達意圖;此處兩個範例都會將數字字串轉換為指定型別。除非你刻意將傳回值指定回同一個變數,否則指定結果不會取代原始字串。此範例不對含有其他字元的字串如何解析作出說明。
在 PHP 中使用 settype() 函式將字串轉換為數字
settype() 函式會接收一個變數和目標型別名稱。它會直接變更該變數,而不是另外傳回轉換後的值。若要將數字字串轉換為整數,請將目標型別設為 integer:
<?php
$value = "45";
settype($value, "integer");
echo $value, "\n";
45
呼叫後,$value 會保存轉換後的值;原先指定給該變數的字串,便無法再透過 $value 取得。若要同時保留兩種形式,請將字串留在一個變數中,並把另一個變數傳給 settype();也可以使用轉型或轉換函式,將結果另行指定。若直接變更既有變數符合需求,請使用 settype();若要在不變更來源變數的情況下取得可供指定或使用的轉換值,則可使用 (int)、(float)、intval() 或 floatval()。此範例僅示範將所示數字字串轉換為整數。