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