PHP是弱類型的所在在使用時(shí)不需要定義變量的類型可以邊使用邊給數(shù)字定義類型,你給變量什么類型變量就自動(dòng)是什么類型.
在PHP里,變量的類型是賦給它們的值決定的.如果賦的值是整型,那么變量就是整型,如果是字符串,就是字符串型.
實(shí)例代碼如下:
PHP 支持八種原始類型(type).
四種標(biāo)量類型:
string(字符串)
integer(整型)
float(浮點(diǎn)型,也作 double )
boolean(布爾型)
兩種復(fù)合類型:
array(數(shù)組)
object(對(duì)象)
兩種特殊類型:
resource(資源)
NULL(空)
查看變量類型
通過(guò) gettype() 函數(shù)可以方便的查看某個(gè)變量的類型:
實(shí)例代碼如下:
提示
由于歷史原因,如果是 float 類型數(shù)據(jù),gettype() 函數(shù)返回的是 double,而不是 float .
如果想查看某個(gè)表達(dá)式的值和類型,請(qǐng)使用用 var_dump() 函數(shù).
判斷變量類型
如果想通過(guò)判斷變量類型來(lái)確定下一步邏輯動(dòng)作,不要使用 gettype() ,而使用 is_type 系列函數(shù):
實(shí)例代碼如下:
integer數(shù)據(jù)類型:
一個(gè) integer 是集合 Z={…,-2,-1,0,1,2,…} 中的一個(gè)數(shù).整型值可以用十進(jìn)制,十六進(jìn)制或八進(jìn)制符號(hào)指定,前面可以加上可選的符號(hào)(-或者+).
如果用八進(jìn)制符號(hào),數(shù)字前必須加上 0(零),用十六進(jìn)制符號(hào)數(shù)字前必須加上 0x.
實(shí)例代碼如下:
整型值可以使用十進(jìn)制,十六進(jìn)制或八進(jìn)制進(jìn)行表示,前面可以加上可選的符號(hào)(- 或者 +).
八進(jìn)制表示數(shù)字前必須加上 0(零),十六進(jìn)制表示數(shù)字前必須加上 0x.
整型數(shù)的字長(zhǎng)和平臺(tái)有關(guān),盡管通常最大值是大約二十億(32 位有符號(hào)).PHP 不支持無(wú)符號(hào)整數(shù).Integer值的字長(zhǎng)可以用常量PHP_INT_SIZE來(lái)表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量PHP_INT_MAX來(lái)表示.
如果給定的一個(gè)數(shù)超出了 integer 的范圍,將會(huì)被解釋為 float.同樣如果執(zhí)行的運(yùn)算結(jié)果超出了 integer 范圍,也會(huì)返回 float.
PHP 中沒(méi)有整除的運(yùn)算符.1/2 產(chǎn)生出 float 0.5.可以總是舍棄小數(shù)部分,或者使用 round() 函數(shù).
要明確地將一個(gè)值轉(zhuǎn)換為 integer,用 (int) 或 (integer) 強(qiáng)制轉(zhuǎn)換.不過(guò)大多數(shù)情況下都不需要強(qiáng)制轉(zhuǎn)換,因?yàn)楫?dāng)運(yùn)算符,函數(shù)或流程控制需要一個(gè) integer 參數(shù)時(shí),值會(huì)自動(dòng)轉(zhuǎn)換.還可以通過(guò)函數(shù) intval() 來(lái)將一個(gè)值轉(zhuǎn)換成整型.
從布爾值轉(zhuǎn)換,FALSE 將產(chǎn)生出 0(零),TRUE 將產(chǎn)生出 1(壹).
從浮點(diǎn)數(shù)轉(zhuǎn)換,當(dāng)從浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)時(shí),將向零取整.如果浮點(diǎn)數(shù)超出了整數(shù)范圍(通常為 +/- 2.15e+9 = 2^31),則結(jié)果不確定,因?yàn)闆](méi)有足夠的精度使浮點(diǎn)數(shù)給出一個(gè)確切的整數(shù)結(jié)果.在此情況下沒(méi)有警告,甚至沒(méi)有任何通知!
布爾型是最簡(jiǎn)單的類型.boolean 表達(dá)了真值,可以為 TRUE 或 FALSE.要指定一個(gè) 布爾值,使用關(guān)鍵字 TRUE 或 FALSE,兩個(gè)都是大小寫(xiě)不敏感的.
實(shí)例代碼如下:
以下值被認(rèn)為是 FALSE:
布爾值 FALSE
整型值 0(零)
浮點(diǎn)型值 0.0(零)
空白字符串和字符串 "0"
沒(méi)有成員變量的數(shù)組
沒(méi)有單元的對(duì)象
特殊類型 NULL(包括尚未設(shè)定的變量) 所有其它值都被認(rèn)為是 TRUE(包括任何資源)
float數(shù)據(jù)類型
浮點(diǎn)數(shù)的字長(zhǎng)和平臺(tái)相關(guān),盡管通常最大值是 1.8e308 并具有 14 位十進(jìn)制數(shù)字的精度(64 位 IEEE 格式).
顯然簡(jiǎn)單的十進(jìn)制分?jǐn)?shù)如同 0.1 或 0.7 不能在不丟失一點(diǎn)點(diǎn)精度的情況下轉(zhuǎn)換為內(nèi)部二進(jìn)制的格式.這就會(huì)造成混亂的結(jié)果:例如,floor((0.1+0.7)*10) 通常會(huì)返回 7 而不是預(yù)期中的 8,因?yàn)樵摻Y(jié)果內(nèi)部的表示其實(shí)是類似 7.9.
實(shí)例代碼如下:
輸出是
float(0.59999999999999)
然而76.70就不會(huì)出現(xiàn)這個(gè)問(wèn)題... 后來(lái)發(fā)現(xiàn)
實(shí)例代碼如下:
輸出是int(7659)
那確實(shí)是76.60的問(wèn)題... (Java,Obj-C下面也重現(xiàn)了這個(gè)問(wèn)題)
這和一個(gè)事實(shí)有關(guān),那就是不可能精確的用有限位數(shù)表達(dá)某些十進(jìn)制分?jǐn)?shù).例如,十進(jìn)制的 1/3 變成了 0.3.
浮點(diǎn)型
浮點(diǎn)數(shù)(也叫“floats”,“doubles”或“real numbers”)可以用以下任何語(yǔ)法定義:
實(shí)例代碼如下:
在php中這幾種數(shù)字類型我們都詳細(xì)的講解了有需要了解的朋友可以參考一下.