強(qiáng)轉(zhuǎn)方法:1、在要轉(zhuǎn)換的變量之前加上用括號(hào)括起來(lái)的目標(biāo)類(lèi)型(“(int)”、“(bool)”、“(float)”等);2、使用類(lèi)型轉(zhuǎn)換函數(shù)intval()、floatval()、boolval()、strval()、settype()。
本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版、DELL G3電腦
PHP強(qiáng)制類(lèi)型轉(zhuǎn)換
PHP 中的強(qiáng)制類(lèi)型轉(zhuǎn)換和其他語(yǔ)言很類(lèi)似,可以在要轉(zhuǎn)換的變量之前加上用括號(hào)括起來(lái)的目標(biāo)類(lèi)型(例如$var = (int)3.1415;
),也可以使用具體的類(lèi)型轉(zhuǎn)換函數(shù)(例如 intval()
、floatval()
、strval()
等)或者 settype()
來(lái)轉(zhuǎn)換類(lèi)型。
使用在變量之前加上用括號(hào)括起來(lái)的目標(biāo)類(lèi)型的方式強(qiáng)制轉(zhuǎn)換變量類(lèi)型時(shí),括號(hào)中允許使用的變量類(lèi)型如下所示:
-
(int)
、(integer)
:轉(zhuǎn)換成整型; -
(bool)
、(boolean)
:轉(zhuǎn)換成布爾類(lèi)型; -
(float)
、(double)
、(real)
:轉(zhuǎn)換成浮點(diǎn)類(lèi)型; -
(string)
:轉(zhuǎn)換成字符串類(lèi)型; -
(array)
:轉(zhuǎn)換成數(shù)組類(lèi)型; -
(object)
:轉(zhuǎn)換成對(duì)象類(lèi)型。
使用具體的轉(zhuǎn)換函數(shù) intval()
、floatval()
、boolval()
、strval()
等來(lái)轉(zhuǎn)換變量的類(lèi)型時(shí),這些函數(shù)的作用如下所示:
-
intval():用于獲取變量的整數(shù)值;
-
floatval():用于獲取變量的浮點(diǎn)值;
-
boolval():用于獲取變量的布爾值;
-
strval():用于獲取變量的字符串值。
【示例】使用以上幾個(gè)函數(shù)強(qiáng)制轉(zhuǎn)換變量的類(lèi)型。
<?php $str = '123.456abc'; $int = intval($str); echo '變量 $int 的類(lèi)型為:'.gettype($int).'<br>'; $float = floatval($str); echo '變量 $float 的類(lèi)型為:'.gettype($float).'<br>'; $string = strval($str); echo '變量 $string 的類(lèi)型為:'.gettype($string); ?>
運(yùn)行結(jié)果如下:
變量 $int 的類(lèi)型為:integer 變量 $float 的類(lèi)型為:double 變量 $string 的類(lèi)型為:string
上面介紹的兩種強(qiáng)制類(lèi)型轉(zhuǎn)換的方式都不會(huì)改變被轉(zhuǎn)換變量本身的類(lèi)型,而是通過(guò)將轉(zhuǎn)換得到的新類(lèi)型的數(shù)據(jù)賦值給新的變量,原變量的類(lèi)型和值不變。
如果需要改變變量本身的類(lèi)型可以使用 settype()
函數(shù)來(lái)完成,函數(shù)的語(yǔ)法格式如下:
settype(mixed &$var, string $type)
其中,$var 為要轉(zhuǎn)換的變量;$type 為要轉(zhuǎn)換的類(lèi)型,可以是 boolean(bool)
、integer(int)
、float(double)
、string
、array
、object
、null
。
【示例】使用 settype() 函數(shù)強(qiáng)制轉(zhuǎn)換變量的類(lèi)型。
<?php $str = (string)'123abc'; $bool = (bool)true; settype($str, 'integer'); settype($bool, 'string'); echo '$str 的類(lèi)型為:'.gettype($str).'<br> $bool 的類(lèi)型為:'.gettype($bool); ?>
運(yùn)行結(jié)果如下:
$str 的類(lèi)型為:integer $bool 的類(lèi)型為:string
使用強(qiáng)制類(lèi)型轉(zhuǎn)換有以下幾點(diǎn)需要注意:
-
整型轉(zhuǎn)化為浮點(diǎn)型,由于浮點(diǎn)型的精度范圍遠(yuǎn)大于整型,所以轉(zhuǎn)化后的精度不會(huì)改變;
-
浮點(diǎn)型轉(zhuǎn)化為整型,將會(huì)自動(dòng)舍棄小數(shù)部分,只保留整數(shù)部分。如果一個(gè)浮點(diǎn)數(shù)超過(guò)整型數(shù)字的有效范圍,其結(jié)果將是不確定的;
-
字符串轉(zhuǎn)化為數(shù)字時(shí),是從字符串開(kāi)始到第一個(gè)不是數(shù)字的字符結(jié)束(不符合的內(nèi)容清空),也就是說(shuō)如果字符串第一個(gè)字符不是數(shù)字的話(huà),轉(zhuǎn)換后的結(jié)果為 0;
-
NULL 值轉(zhuǎn)為字符串,結(jié)果為空字符。
推薦學(xué)習(xí):《PHP視頻教程》