您好,登錄后才能下訂單哦!
1.類型介紹:
php支持8種原始類型
四種標量類型
。布爾型boolean
。×××(integer)
。浮點型(float)(浮點數,也做double)
。字符串(string)
兩種復合類型
。數組(array)
。對象(object)
最后是兩種特殊類型
。資源(resource)
。null
為了確保代碼的易讀性,本手冊還介紹了一些偽類型
。混合(mixed)
。數字(number)
。回饋(callback)
你可能還會讀到一些關于雙精度double類型的參考。實際上double和float是相同的,由于一些歷史原因這兩個名詞同時存在
變量的類型通常不是由程序員設定的,確切的說是有php根據該變量使用的上線問運行時決定的
注:如果你想查看某個表達式的值和類型,用var_dump()。
注:如果你只想看到一個以讀懂的類型的表達方式用于調試,用gettype().要查看某個類型,不要用gettype(),而用is_type()函數,以下是一些范例:
<?php $bool=TRUE;//a boolean $str="foo";//a string $int=12;//an integer echo gettype($bool);//prints out "boolean" echo gettype($str);//print out "string" //If this is an integer, increment it by four if(is_int($int)) { $int+=4; } //If $bool is a string,print it out //(does not print out anything) if(is_string($bool)) { echo "String:$bool"; } ?>
如果你要將一個變量強制轉換成某類型,可以對其使用強制轉換或者settype()函數。
注意變量很據當時的類型在特定場合下會表現出不同的值。更多類型件類型戲法。此外你還可以參考 php類型比較表 看不同類型相互比較的例子。
2。布爾型
這是最簡單的類型。boolean 表達了真值。可以為true或者false
注:布爾類型是php4引進的
語法
要制定一個布爾值,使用關鍵字true或者false,兩個都是大小寫不敏感的
<?php
$foo=True;//assign the value TRUE to $foo
?>
通常你用某些運算符返回boolean值,并將其傳遞給流程控制
//==is an operator which test //equality and returns a boolean if($action=="show_version"){ echo "The version is 1.23"; } //this is not necessary... if($show+separators==true){ echo "<hr>\n"; } //...because you can simply type if($show_separators){ echo "<hr>\n"; }
轉換成布爾值
要明示地將一個值轉換成boolean,用bool或者boolean來強制轉換。但是很多情況下不需要強制轉換,因為當運算符,函數或者流程控制需要一個boolean參數時,該值會被自動轉換。
參見類型戲法
當轉換成boolean時,以下值被認為是false
。布爾值false
。整型值 0(零)
。浮點型值0.0(零)
。空白字符串和字符串“0”
。沒有成員變量的數組
。沒有單元的對象
。特殊類型null(包括尚未定義的變量)
所有其他值都被認為是true(包括任何資源)
警告:
-1和其他非零值(不論正負)一樣,被認為是true
<?php echo gettype((bool)"");//bool(false) echo gettype((bool)1);//bool(true) echo gettype((bool)-2);//bool(true) echo gettyope((bool)"foo");//bool(true) echo gettype((bool)2.3e5);//bool(true) echo gettype((bool)array(12));//bool(true) echo gettype((bool)array());//bool(false) ?>
3.×××
一個integer是集合Z={...,-2,-1,0,1,2,...}中的一個數。
參見任意長度證書/GMP,浮點數 和任意精度數學庫/BCMath
語法
整型值可以用10進制,16進制或8進制符號指定,前面可以加上可選的符號(—或者+)
如果用8進制符號,數字前必須加上0,用16進制符號數字前必須加上0x
例子 6-1 整數文字表達
<?php
$a=1234;#10進制數
$a=-123;#10進制數
$a=0123;#八進制數(等于10進制的83)
?>
在字面上,×××變量正式的結構可以為:
<?php decimal :[1-9][0-9]* |0 hexadecimal:0[xX][0-9a-fA-F]+ octal :0[0-7]+ integer :[+-]?decimal |[+-]?hexadecimal |[+-]?octal ?>
×××的字長和平臺有關,盡管通常最大值是大約20億(32位有符號),php不支持無符號整數
整數溢出
如果你指定了一個數超出了integer的范圍,竟會被解釋為float.同樣如果你執行的運算結果超出了integer范圍,也會返回float
<?php $large_number=2147483647; var_dump($large_number); //輸出為:int(2147483647) $large_number=2147483648; var_dump($large_number); //輸出為:float(2147483648) //同樣也適用于16進制的表示的整數 var_dump(0x80000000); //輸出為:float(2147483648) $million=1000000; $large_number=50000*$nillion; var_dump($larger_number); //輸出為:float(50000000000) ?>
警告:
不幸的是php中有個bug,因此當有負數參與結果是并不總是正確。
例如當運算-50000*¥million是結果是-429496728.不過當兩個運算數都是正數時就沒有問題
這個問題在php4.1.0中解決了
php中沒有整出的運算符。1/2產生浮點數0.5.您可以總是舍棄小數部分,或者使用round()函數
<?php var_dump(25/7);//float(3.5714285714286) var_dump((int)(25/7));//int(3) var_dump(round(25/7));float(4) ?>
轉換為×××
要明示地將一個值轉換為integer,用(int)或(integer)強制轉換。
不過大多數情況下都不需要強制轉換。因為當運算符,函數,或者流程控制需要一個integer參數時值會自動轉換
。您還可以通過函數intval()來將一個值轉換成×××
從布爾值轉換
false將產生0(零),true將產生1(壹)
從浮點數轉換
當從浮點數轉換成正數時,數字將被取整(丟棄小數位)
如果浮點數超出了整數范圍(通常為+/- 2.15e+9=2^31),則結果不確定
,因為沒有足夠的精度使浮點數給出一個確切的整數結果。在此情況下沒有警告,甚至沒有任何通知!
譯者注:在linux下返回的結果是最小負數(-2147483648),而在windows下返回的結果是0
警告:
絕不要將未知的分數強制轉換為integer,這樣有時會導致意外的結果
<?php
echo (int)((0.1+0.7)*10);//顯示7!
?>
從字符串轉換
注意:
沒有定義從其他類型轉換為×××的行為。目前的行為和值先轉換為布爾值一樣。不過不要依靠此行為,因為它會未加通知的改變。
4.浮點型
浮點數(也叫“float”,"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})
浮點數的字長和平臺相關,盡管通常最大值是1.8e308并具有14位十進制數字的精度(64位IEEE格式)
浮點數精度
顯然簡單的十進制分數如同0.1或0.7不能在不丟失一點點精度的情況下轉換為內部二進制的格式,這樣會造成混亂的結果:例如floor((0.1+0.7)*10)通常會返回7而不是預期中的8,因為該結果內部的表示其實是類似7.9999999.。。。
這和一個事實有關,那就是那就是不可能用精確的用有限位數表達十進制分數。例如十進制1/3變成了0.3333333.
所以永遠不要相信浮點數結果精確到了最后一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函數庫gmp函數庫
轉換為浮點數:
如果您洗完了解有關何時和如何將字符串轉換成浮點數的信息,請查閱標題為“將字符串轉換為數字”的有關章節。對于其他類型的值,其情況類似于先將值轉換為×××,然后再轉換成浮點。
5.字符串
string是一系列字符。在php中,字符和字節一樣,也就是說,一共有256種不同字符的可能性。這也暗示,php和unicode沒有本地支持。請參閱utf8_encode和utf8_decode
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。