php數據類型(一)

1、簡介

php包括8中基本類型,其中4種標量類型boolean(布爾型),integer(整型),float(浮點型),string(字符串),2種複合類型array(數組),object(對象),還有兩種特殊類型resource(資源),null。若是要查看一個變量的值和類型能夠用var_dump();來輸出,若是僅僅想看類型,能夠用gettype()函數,另外要判斷是否是某個類型能夠用is_type()函數(好比is_null($a))。 php

2、布爾類型

布爾型說白了就是真的仍是假的,它只有兩種值,要麼真要麼假。定義也很簡單,只要只要把ture或者false賦值給變量便可。給布爾型變量賦值不區分大小寫,$a=true;$a=TRUE,是等效的。 數組

當轉換爲 boolean 時,如下值被認爲是 FALSE函數

除以上之外任何值都是TRUE。 spa

布爾型不須要手工轉換,通常在程序中須要用到布爾型的時候程序會自動轉換 .net

在用布爾型做爲流程控制的時候必定要注意if($a=1) ,if($a==1)以及if($a===1)的區別,=是賦值語句不屬於以上狀況,因此永遠是真,==和===都是比較運算符,前者不檢查類型,後者檢查類型,即類型和值都相同纔會相等。還有要注意的是字符串’0.0′轉換後也是true。 code

3、整型

整型說來了就是整數,包括正整數和負整數,通常的範圍是-231~231-1。 對象

整型值可使用十進制,十六進制或八進制表示,前面能夠加上可選的符號(- 或者 +)。 資源

八進制表示數字前必須加上 0(零),十六進制表示數字前必須加上 0x。下面的代碼都是真確的定義(之後介紹進制之間的轉換): 文檔

1 $a = 1234; // 十進制數
2 $a = -123; // 負數
3 $a = 0123; // 八進制數 (等於十進制 83)
4 $a = 0x1A; // 十六進制數 (等於十進制 26)

注意:若是向八進制數傳遞了一個非法數字(即 8 或 9),則後面其他數字會被忽略。 字符串

注意:若是給定的一個數超出了 integer 的範圍,將會被解釋爲 float。一樣若是執行的運算結果超出了integer 範圍,也會返回 float

要將其餘類型轉換成整形能夠經過(int) 或 (integer) 強制轉換,也能夠經過函數intval()來實現。

從布爾類型轉換:FALSE 將產生出 0(零),TRUE 將產生出 1(壹)。

從浮點數轉換:將捨去小數。若是浮點數超出了整數範圍(一般爲 +/- 2.15e+9 = 2^31),則結果不肯定,

從字符串轉換:若是字符串 沒有包含 ‘.’,’e'或’E’ 而且數字值符合整數類型的限定, 這個 字符串 可被認定是一個 整型, 在其它狀況下被認定爲一個float。若是 字符串 以合法的數字開始,這個數字可直接使用。 不然,值就是 0 (零)。 合法數值由符號,後面跟着一個或多個數字(可能有個小數點),再跟着可選的指數符號如’e’ 或 ‘E’,後面跟着一個或多個數字。

運行下面的代碼看看效果吧

01 <?php
02 $large_number =  2;
03 var_dump($large_number);
04 // 輸出爲:int(2)
05  
06 $large_number =  2147483648;
07 var_dump($large_number);
08 //// 輸出爲:float(2147483648)
09  
10 var_dump((int)false); //0
11 var_dump((int)true);  //1
12 var_dump((int)2.01); //2
13 var_dump((int)2.01+(int)3.99); //5
14 var_dump((int)3.99);//3
15 var_dump((int)(2000000000*2+200000003)); //隨數字變化
16  
17 var_dump('1.23' > '01.23'); // bool(false) 等價於1>1
18 var_dump('1.22.00' > '01.23.00'); // bool(true) 等價於1>0
19 var_dump('1-22-00' > '01-23-00'); // bool(true) 等價於1>0
20 var_dump((float)'1.22.00' > (float)'01.23.00'); // bool(false)等價於1.22>1.23
21  
22 ?>

4、浮點型

浮點型通俗點講就是小數。浮點數的字長和平臺相關,一般最大值是 1.8e308 並具備 14 位十進制數字的精度。一下定義都是真確的:

1 $a = 1.234;
2 $b = 1.2e3;
3 $c = 7E-10;

注意:簡單的十進制分數如同 0.1 或 0.7 不能在不丟失一點點精度的狀況下轉換爲內部二進制的格式。這就會形成混亂的結果:例如,var_dump((int)((0.1+0.7)*10));一般會返回 7 而不是預期中的 8,由於該結果內部的表示實際上是相似 7.9

這和一個事實有關,那就是不可能精確的用有限位數表達某些十進制分數。例如,十進制的 1/3 變成了0.3。因此永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等

字符串轉換成浮點數和字符串轉換成整數規則相同;對於其它類型的值,其狀況相似於先將值轉換成整型,而後再轉換成浮點。趕忙去試試下面這段神奇的代碼吧。

1 <?php
2 $a = 0.1;
3 $b = 0.7;
4 var_dump((int)(($a+$b)*10));//結果是7不是8
5  
6 ?>

浮點型

php數據類型(二)

 

本文固定連接: http://www.qaforcode.net/archives/169 | 豬哥每日一貼

相關文章
相關標籤/搜索