PHP強制類型轉換

PHP 中的強制類型轉換和其他語言很類似

  1. 可以在要轉換的變量之前加上用括號括起來的目標類型(例如$var = (int)3.1415;)
  2. 也可以使用具體的類型轉換函數(例如 intval()、floatval()、strval() 等)或者 settype() 來轉換類型。

轉換變量的方法

使用在變量之前加上用括號括起來的目標類型的方式強制轉換變量類型時,括號中允許使用的變量類型如下所示:
(int)、(integer):轉換成整型;
(bool)、(boolean):轉換成布爾類型;
(float)、(double)、(real):轉換成浮點類型;
(string):轉換成字符串類型;
(array):轉換成數組類型;
(object):轉換成對象類型。

轉換函數

使用具體的轉換函數 intval()、floatval()、boolval()、strval() 等來轉換變量的類型時,這些函數的作用如下所示:
intval():用於獲取變量的整數值;
floatval():用於獲取變量的浮點值;
boolval():用於獲取變量的布爾值;
strval():用於獲取變量的字符串值。

<?php
    $str = '123.456abc';
    $int = intval($str);
    echo '變量 $int 的類型為:'.gettype($int).'<br>';
    $float = floatval($str);
    echo '變量 $float 的類型為:'.gettype($float).'<br>';
    $string = strval($str);
    echo '變量 $string 的類型為:'.gettype($string);
?>

運行結果:

變量 $int 的類型為:integer
變量 $float 的類型為:double
變量 $string 的類型為:string

注意

以上兩種皆不會改變被裝換變量本身的類型,而是通過將轉換得到的新類型的數據賦值給新的變量,原變量的類型和值不變。
如果需要改變變量本身的類型可以使用 settype() 函數來完成

settype(mixed &$var, string $type)

其中,less 強制不轉換rem_整型type 為要轉換的類型,可以是 boolean(bool)、integer(int)、float(double)、string、array、object、null。

<?php
    $str = (string)'123abc';
    $bool = (bool)true;
    settype($str, 'integer');
    settype($bool, 'string');
    echo '$str 的類型為:'.gettype($str).'<br> $bool 的類型為:'.gettype($bool);
?>

運行結果:

$str 的類型為:integer
$bool 的類型為:string

其他

  • 整型轉化為浮點型,由於浮點型的精度範圍遠大於整型,所以轉化後的精度不會改變;
  • 浮點型轉化為整型,將會自動捨棄小數部分,只保留整數部分。如果一個浮點數超過整型數字的有效範圍,其結果將是不確定的;
  • 字符串轉化為數字時,是從字符串開始到第一個不是數字的字符結束(不符合的內容清空),也就是説如果字符串第一個字符不是數字的話,轉換後的結果為0;
  • NULL 值轉為字符串,結果為空字符。