PHP基礎(chǔ)之?dāng)?shù)據(jù)類(lèi)型10——類(lèi)型轉(zhuǎn)換的判別
PHP 在變量定義中不需要(或不支持)明確的類(lèi)型定義;變量類(lèi)型是根據(jù)使用該變量的上下文所決定的。也就是說(shuō),如果把一個(gè)字符串值賦給變量?$var,$var?就成了一個(gè)字符串。如果又把一個(gè)整型值賦給?$var,那它就成了一個(gè)整數(shù)。
PHP 的自動(dòng)類(lèi)型轉(zhuǎn)換的一個(gè)例子是加法運(yùn)算符“+”。如果任何一個(gè)操作數(shù)是浮點(diǎn)數(shù),則所有的操作數(shù)都被當(dāng)成浮點(diǎn)數(shù),結(jié)果也是浮點(diǎn)數(shù)。否則操作數(shù)會(huì)被解釋為整數(shù),結(jié)果也是整數(shù)。注意這并沒(méi)有改變這些操作數(shù)本身的類(lèi)型;改變的僅是這些操作數(shù)如何被求值以及表達(dá)式本身的類(lèi)型。
<?php$foo?=?'0';??//?$foo?是字符串?(ASCII?48)$foo?+=?2;???//?$foo?現(xiàn)在是一個(gè)整數(shù)?(2)$foo?=?$foo?+?1.3;??//?$foo?現(xiàn)在是一個(gè)浮點(diǎn)數(shù)?(3.3)$foo?=?5?+?'10?Little?Piggies';?//?$foo?是整數(shù)?(15)$foo?=?5?+?'10?Small?Pigs';?????//?$foo?是整數(shù)?(15)?>如果想要測(cè)試本節(jié)中任何例子的話(huà),可以用?var_dump()?函數(shù)。
Note:
自動(dòng)轉(zhuǎn)換為?數(shù)組?的行為目前沒(méi)有定義。
此外,由于 PHP 支持使用和數(shù)組下標(biāo)同樣的語(yǔ)法訪問(wèn)字符串下標(biāo),以下例子在所有 PHP 版本中都有效:
<?php$a????=?’car’;?//?$a?is?a?string$a[0]?=?’b’;???//?$a?is?still?a?stringecho?$a;???????//?bar?>類(lèi)型強(qiáng)制轉(zhuǎn)換PHP 中的類(lèi)型強(qiáng)制轉(zhuǎn)換和 C 中的非常像:在要轉(zhuǎn)換的變量之前加上用括號(hào)括起來(lái)的目標(biāo)類(lèi)型。
<?php$foo?=?10;???//?$foo?is?an?integer$bar?=?(boolean)?$foo;???//?$bar?is?a?boolean?>允許的強(qiáng)制轉(zhuǎn)換有:
(int), (integer) - 轉(zhuǎn)換為整形?integer(bool), (boolean) - 轉(zhuǎn)換為布爾類(lèi)型?boolean(float), (double), (real) - 轉(zhuǎn)換為浮點(diǎn)型?float(string) - 轉(zhuǎn)換為字符串?string(array) - 轉(zhuǎn)換為數(shù)組?array(object) - 轉(zhuǎn)換為對(duì)象?object(unset) - 轉(zhuǎn)換為?NULL?(PHP 5)(binary) 轉(zhuǎn)換和 b 前綴轉(zhuǎn)換支持為 PHP 5.2.1 新增。
注意在括號(hào)內(nèi)允許有空格和制表符,所以下面兩個(gè)例子功能相同:
<?php$foo?=?(int)?$bar;$foo?=?(?int?)?$bar;?>將字符串文字和變量轉(zhuǎn)換為二進(jìn)制字符串:
<?php$binary?=?(binary)$string;$binary?=?b'binary?string';?>Note:
可以將變量放置在雙引號(hào)中的方式來(lái)代替將變量轉(zhuǎn)換成字符串:
<?php$foo?=?10;????????????//?$foo?是一個(gè)整數(shù)$str?=?'$foo';????????//?$str?是一個(gè)字符串$fst?=?(string)?$foo;?//?$fst?也是一個(gè)字符串//?輸出?'they?are?the?same'if?($fst?===?$str)?{echo?'they?are?the?same';}?>有時(shí)在類(lèi)型之間強(qiáng)制轉(zhuǎn)換時(shí)確切地會(huì)發(fā)生什么可能不是很明顯。更多信息見(jiàn)如下小節(jié):
轉(zhuǎn)換為布爾型轉(zhuǎn)換為整型轉(zhuǎn)換為浮點(diǎn)型轉(zhuǎn)換為字符串轉(zhuǎn)換為數(shù)組轉(zhuǎn)換為對(duì)象轉(zhuǎn)換為資源轉(zhuǎn)換為 NULL相關(guān)文章:
1. XML入門(mén)的常見(jiàn)問(wèn)題(四)2. HTML5 Canvas繪制圖形從入門(mén)到精通3. ASP基礎(chǔ)知識(shí)VBScript基本元素講解4. 利用CSS3新特性創(chuàng)建透明邊框三角5. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼6. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁(yè)的方法7. 詳解CSS偽元素的妙用單標(biāo)簽之美8. JSP的Cookie在登錄中的使用9. XHTML 1.0:標(biāo)記新的開(kāi)端10. PHP設(shè)計(jì)模式中工廠模式深入詳解
