數(shù)據(jù)類(lèi)型轉(zhuǎn)換
正如其它編程語(yǔ)言那樣延旧,php不同數(shù)據(jù)類(lèi)型之間也是可以互相轉(zhuǎn)化的熏挎,今天我們來(lái)簡(jiǎn)單列舉它們的轉(zhuǎn)換。
首先我們來(lái)看下php查看數(shù)據(jù)類(lèi)型的函數(shù)有哪些
- gettype(數(shù)據(jù)):獲取數(shù)據(jù)類(lèi)型
- var_dump(數(shù)據(jù)):直接輸出數(shù)據(jù)類(lèi)型和對(duì)應(yīng)的數(shù)據(jù)
$num1 = 10;
echo(gettype($num1));//int
var_dump($num1);//int 10
轉(zhuǎn)換為Boolean類(lèi)型
轉(zhuǎn)換為bool類(lèi)型的格式
- (bool)數(shù)據(jù)/變量
- (boolean)數(shù)據(jù)/變量
轉(zhuǎn)化bool的注意點(diǎn)
- 轉(zhuǎn)換為false
- 整數(shù)0
- 浮點(diǎn)數(shù)0.0
- 空字符串 ""或者串"0"
- 空對(duì)象NULL
- 空數(shù)組Array()或者[]
- 轉(zhuǎn)換為true
- 除了上面轉(zhuǎn)化為false,其它的都會(huì)轉(zhuǎn)換為true
var_dump((bool)1)."";//bool true
var_dump ((bool)0)." ";//bool false
var_dump ((bool)"")." ";//bool false
var_dump ((bool)array())." ";//bool false
var_dump((bool)NULL)."\n";//bool false
轉(zhuǎn)換為Integer類(lèi)型
轉(zhuǎn)換為Integer類(lèi)型的格式
- (int)數(shù)據(jù)/變量
- intval(數(shù)據(jù)/變量)
轉(zhuǎn)換為Integer的注意點(diǎn)
- bool的true會(huì)轉(zhuǎn)化為1,false會(huì)轉(zhuǎn)化為0
- float轉(zhuǎn)換為int,直接省去小數(shù)部分 (int)9.9 = 9;
- 字符串轉(zhuǎn)化為int時(shí),當(dāng)字符串開(kāi)頭有最前面出現(xiàn)數(shù)字時(shí)會(huì)將數(shù)字轉(zhuǎn)換羽历,其余部分不變。(int)"34dzp"=34;
var_dump ((int)10.9)." ";//int 10
var_dump ((int)true)." ";//int 1
var_dump ((int)"45abc")." ";//int 45
var_dump (intval("451"))." ";//int 451
轉(zhuǎn)換為Float類(lèi)型
轉(zhuǎn)換為Float類(lèi)型的格式
- 格式1:(float)變量/數(shù)據(jù)
- 格式2:floatval(變量/變量)
轉(zhuǎn)換為Float的注意點(diǎn)
- true會(huì)轉(zhuǎn)化為1淡喜,false會(huì)轉(zhuǎn)化為0
- int類(lèi)型轉(zhuǎn)化float秕磷,保持原數(shù)據(jù),其實(shí)精度提升了炼团。
- string類(lèi)型轉(zhuǎn)換為float,只會(huì)轉(zhuǎn)換字符串最開(kāi)頭的數(shù)字
var_dump ((float)10.9)." ";//float 10.9
var_dump ((float)true)." ";//float 1
var_dump ((float)"45abc")." ";//float 45
var_dump (floatval("451"))." ";//float 451
轉(zhuǎn)換為String類(lèi)型
轉(zhuǎn)換為String類(lèi)型的格式
- 格式1:(string)變量/數(shù)據(jù)
- 格式2:strval(變量/數(shù)據(jù))
轉(zhuǎn)換為String的注意點(diǎn)
- false轉(zhuǎn)化為空串澎嚣,true轉(zhuǎn)換為串'1'
- int或者float轉(zhuǎn)換為對(duì)應(yīng)的數(shù)字字符串(string)"234" = 234
var_dump ((string)10.9)." ";//string 10.9
var_dump (strval(false))." ";//string 10.9
var_dump((string)false);//string ''
轉(zhuǎn)換為Array類(lèi)型
轉(zhuǎn)換為Array類(lèi)型的格式
- (array)變量/數(shù)據(jù)
- array(數(shù)據(jù)/變量)
轉(zhuǎn)換為Array類(lèi)型的注意點(diǎn)
- 對(duì)于任意 integer疏尿,float,string易桃,boolean 和 resource 類(lèi)型褥琐,如果將一個(gè)值轉(zhuǎn)換為數(shù)組,將得到一個(gè)僅有一個(gè)元素的數(shù)組晤郑,其下標(biāo)為 0踩衩,該元素即為此標(biāo)量的值。
$num1 = 10;
$num2 = true;
$num3 = "abc";
print_r((array)$num1);//0=>10
print_r((array)$num2);//0=>1
print_r((array)$num3);//0=>abc
轉(zhuǎn)換為Object類(lèi)型
轉(zhuǎn)換為Object類(lèi)型的格式
- (object)變量/數(shù)據(jù)
轉(zhuǎn)換為Object類(lèi)型的注意點(diǎn)
- 數(shù)組轉(zhuǎn)換為Object類(lèi)型贩汉,對(duì)應(yīng)的數(shù)組的key作為對(duì)象的屬性,對(duì)應(yīng)的value作為對(duì)應(yīng)屬性的值锚赤。
- 除了數(shù)組以外匹舞,其它數(shù)據(jù)或者對(duì)應(yīng)數(shù)據(jù)的變量都只會(huì)轉(zhuǎn)換為 scalar:變量對(duì)應(yīng)的值
$mm = 10;
print_r((object)$mm);//Object(scalar:10)
print_r((object)true);//Object(scalar:1)
print_r((object)100.1);//Object(scalar:100.1)
print_r((object)array("abc"=>1,2,3));//Object(abc:1,0:2,1:3);