PHP 支持八種原始類型。四種標(biāo)量類型:布爾型(boolean)整型(integer)浮點型(float)(浮點數(shù),也作“double”)字符串 (string)兩種復(fù)合類型:數(shù)組(array)對象(object)最后是兩種特殊類型:資源(resource)NULL為了確保代碼的易讀性,本 手冊還介紹了一些偽類型:混和(mixed)數(shù)字(number)回饋(callback)
AD:
整型
一個 integer 是集合 Z = {…, -2, -1, 0, 1, 2, …} 中的一個數(shù)。
參見任意長度整數(shù) / GMP,浮點數(shù) 和 任意精度數(shù)學(xué)庫 / BCMath。
語法
整型值可以用十進(jìn)制,十六進(jìn)制或八進(jìn)制符號指定,前面可以加上可選的符號(- 或者 +)。
如果用八進(jìn)制符號,數(shù)字前必須加上 0(零),用十六進(jìn)制符號數(shù)字前必須加上 0x。 例子 11-1. 整數(shù)文字表達(dá)
<?php $a = 1234; # 十進(jìn)制數(shù) $a = -123; # 一個負(fù)數(shù) $a = 0123; # 八進(jìn)制數(shù)(等于十進(jìn)制的 83) $a = 0x1A; # 十六進(jìn)制數(shù)(等于十進(jìn)制的 26) ?> |
在字面上,整型變量正式的結(jié)構(gòu)可以為:
<?php decimal : [1-9][0-9]* | 0 hexadecimal : 0[xX][0-9a-fA-F]+ octal : 0[0-7]+ integer : [+-]?decimal | [+-]?hexadecimal | [+-]?octal ?> |
整型數(shù)的字長和平臺有關(guān),盡管通常最大值是大約二十億(32 位有符號)。PHP 不支持無符號整數(shù)。
整數(shù)溢出
如果你指定一個數(shù)超出了 integer 的范圍,將會被解釋為 float。同樣如果你執(zhí)行的運算結(jié)果超出了 integer 范圍,也會返回 float。
PHP 中沒有整除的運算符。1/2 產(chǎn)生出浮點數(shù) 0.5。您可以總是舍棄小數(shù)部分,或者使用 round() 函數(shù)。
<?php var_dump(25/7); // float(3.5714285714286) var_dump((int) (25/7)); // int(3) var_dump(round(25/7)); // float(4) ?> |
轉(zhuǎn)換為整形
要明示地將一個值轉(zhuǎn)換為 integer,用 (int) 或 (integer) 強制轉(zhuǎn)換。不過大多數(shù)情況下都不需要強制轉(zhuǎn)換,因為當(dāng)運算符,函數(shù)或流程控制需要一個 integer 參數(shù)時,值會自動轉(zhuǎn)換。您還可以通過函數(shù) intval() 來將一個值轉(zhuǎn)換成整型。
參見類型戲法。
從布爾值轉(zhuǎn)換
FALSE 將產(chǎn)生出 0(零),TRUE 將產(chǎn)生出 1(壹)。
從浮點數(shù)轉(zhuǎn)換
當(dāng)從浮點數(shù)轉(zhuǎn)換成整數(shù)時,數(shù)字將被取整(丟棄小數(shù)位)。
如果浮點數(shù)超出了整數(shù)范圍(通常為 +/- 2.15e+9 = 2^31),則結(jié)果不確定,因為沒有足夠的精度使浮點數(shù)給出一個確切的整數(shù)結(jié)果。在此情況下沒有警告,甚至沒有任何通知!
(譯者注:)在 Linux 下返回結(jié)果是最小負(fù)數(shù)(-2147483648),而在 Windows 下返回結(jié)果是零(0)。
從字符串轉(zhuǎn)換
從其它類型轉(zhuǎn)換
浮點型
浮點數(shù)(也叫“floats”,“doubles”或“real numbers”)可以用以下任何語法定義:
<?php $a = 1.234; $a = 1.2e3; $a = 7E-10; ?> |
形式上:
LNUM [0-9]+ DNUM ([0-9]*[.]{LNUM}) | ({LNUM}[.][0-9]*) EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM}) |
浮點數(shù)的字長和平臺相關(guān),盡管通常最大值是 1.8e308 并具有 14 位十進(jìn)制數(shù)字的精度(64 位 IEEE 格式)。
轉(zhuǎn)換為浮點數(shù)
如果您希望了解有關(guān)何時和如何將字符串轉(zhuǎn)換成浮點數(shù)的信息,請查閱標(biāo)題為“將字符串轉(zhuǎn)換為數(shù)字”的有關(guān)章節(jié)。對于其它類型的值,其情況類似于先將值轉(zhuǎn)換成整型,然后再轉(zhuǎn)換成浮點。請參閱“轉(zhuǎn)換為整型”有關(guān)章節(jié)以獲取更多信息。