網(wǎng)站建設(shè)中PHP是一種弱類型語言,但是在開發(fā)中還是需要用到類型轉(zhuǎn)換。PHP中的類型轉(zhuǎn)換與C語言一樣,非常簡單,只需要在變量前面加上用括號(hào)括起來的類型名稱即可。
除了使用強(qiáng)制轉(zhuǎn)換外,還可以使用settype()函數(shù)轉(zhuǎn)換數(shù)據(jù)類型。該函數(shù)包含參數(shù)值,第一個(gè)值為變量名,第二個(gè)參數(shù)值為要轉(zhuǎn)換的類型字符串,包括boolean、float、integer、string、null、array、object。settype()函數(shù)返回值為布爾值,如果數(shù)據(jù)類型轉(zhuǎn)換成功,則返回true,否則返回false。例如,輸入下面代碼<?php$num = '3.1415926abc'; //聲明字符串變量echo (integer)$num; //把變量強(qiáng)制轉(zhuǎn)換為整型echo '<p>';echo $num; //輸出原始變量值echo '<p>';echo settype($num, 'float'); //輸出把變量轉(zhuǎn)換為浮點(diǎn)數(shù)的結(jié)果echo '<p>';echo $num; //被轉(zhuǎn)換為浮點(diǎn)數(shù)后的變量值?>
轉(zhuǎn)換為布爾值
要明確地將一個(gè)值轉(zhuǎn)換成boolean,應(yīng)該使用(bool)或者(boolean)來強(qiáng)制轉(zhuǎn)換。但是很多情況下不需要用強(qiáng)制轉(zhuǎn)換,因?yàn)楫?dāng)運(yùn)算符、函數(shù)或者流程控制結(jié)構(gòu)需要一個(gè)boolean參數(shù)時(shí),該值會(huì)被自動(dòng)轉(zhuǎn)換。在PHP中,并不是false才是假的,在某些特殊情況下,下面這些boolean值也被認(rèn)為是假的。
?0:整型值零。
?0.0:浮點(diǎn)型值零。
?"0":字符串值零。
?"":空白字符串。
?空數(shù)組:不包括任何元素的數(shù)組。
?空對(duì)象:不包括任何成員變量的對(duì)象(僅PHP 4.0適用)。
?特殊類型NULL(包括尚未設(shè)定的變量)。
?從沒有任何標(biāo)記的XML文檔生成的Sim-pleXML對(duì)象。
其他所有其他值都被認(rèn)為是true(包括任何資源)。注意,-1和其他非零值(不論正負(fù))一樣,被認(rèn)為是真。<?phpvar_dump((bool) ""); //bool(false)var_dump((bool) 1); //bool(true)var_dump((bool) "1"); //bool(true)var_dump((bool) array()); //bool(false)var_dump((bool) "false"); //bool(true)?>
2. 轉(zhuǎn)換為整型要明確地將一個(gè)值轉(zhuǎn)換為整型,可以使用(int)或(integer)強(qiáng)制轉(zhuǎn)換。不過大多數(shù)情況下都不需要強(qiáng)制轉(zhuǎn)換,因?yàn)楫?dāng)運(yùn)算符、函數(shù)或流程控制需要一個(gè)整型參數(shù)時(shí),值會(huì)自動(dòng)轉(zhuǎn)換。還可以通過函數(shù)intval()將一個(gè)值轉(zhuǎn)換成整型。當(dāng)從布爾值轉(zhuǎn)換為整數(shù)值時(shí),false將被轉(zhuǎn)換為0,true將被轉(zhuǎn)換為1。當(dāng)從浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)時(shí),將向零取整。如果浮點(diǎn)數(shù)超出了整數(shù)范圍,則結(jié)果不確定,因?yàn)闆]有足夠的精度把浮點(diǎn)數(shù)轉(zhuǎn)換為確切的整數(shù)結(jié)果,在此情況下沒有警告,甚至沒有任何通知。注意:不要將未知的分?jǐn)?shù)強(qiáng)制轉(zhuǎn)換為整數(shù)型,這樣會(huì)導(dǎo)致不可預(yù)料的結(jié)果。如:<?phpecho (int) ( (0.1+0.7) * 10 ); //顯示7?>
3. 轉(zhuǎn)換為字符串一個(gè)值可以通過在其前面加上(string)或用str-val()函數(shù)來轉(zhuǎn)變成字符串。在一個(gè)需要字符串的表達(dá)式中,字符串會(huì)自動(dòng)轉(zhuǎn)變。例如,在使用函數(shù)echo()或者print()時(shí),或在一個(gè)變量和一個(gè)字符串進(jìn)行比較時(shí),就會(huì)發(fā)生這種轉(zhuǎn)變類型。
?一個(gè)布爾型的true值被轉(zhuǎn)換成字符串"1",而布爾型的false值將被轉(zhuǎn)換成""(空的字符串)。這種轉(zhuǎn)變可以在布爾值和字符串之間隨意進(jìn)行。
?一個(gè)整數(shù)或浮點(diǎn)數(shù)將被轉(zhuǎn)變?yōu)閿?shù)字的字面樣式的字符串(包括浮點(diǎn)數(shù)中的指數(shù)部分),使用指數(shù)計(jì)數(shù)法的浮點(diǎn)數(shù)(16.1E+6)也可轉(zhuǎn)變。
?數(shù)組轉(zhuǎn)換成字符串"Array",因此,echo()和print()無法顯示出數(shù)組的值。如果顯示一個(gè)數(shù)組值,可以用echo $arr['foo']這種結(jié)構(gòu)。
?資源總會(huì)被轉(zhuǎn)變成"Resource id #1"這種結(jié)構(gòu)的字符串,其中的1是PHP分配給該資源的獨(dú)特?cái)?shù)字。
?NULL總是被轉(zhuǎn)變成空的字符串。