PHP的數(shù)據(jù)類型

PHP的數(shù)據(jù)類型

網(wǎng)站設(shè)計、成都網(wǎng)站制作的關(guān)注點不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給成都創(chuàng)新互聯(lián)公司一個展示的機會來證明自己,這并不會花費您太多時間,或許會給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗,一切以用戶為中心。


整體劃分

·        標(biāo)量類型: int, float, string, bool

·        復(fù)合類型: array, object

·        特殊類型: null, resouce

整數(shù)類型int, integer

3種整數(shù)表示法

·        十進制寫法:123:

        $n1 = 123;

·        八進制寫法: 0123

        $n2 = 0123;

·        十六進制寫法: 0x123

        $n3 = 0x123;

進制轉(zhuǎn)換問題

先學(xué)習(xí)幾個單詞:

dec: 十進制

bin:二進制

oct:八進制

hex:十六進制

·        十進制轉(zhuǎn)二進制decbin(),除2取余倒著寫

$v1 = decbin(123); //注意:參數(shù)必須是10進制數(shù)字,轉(zhuǎn)換后的結(jié)果必然是二進制字符串。

PHP的數(shù)據(jù)類型

 

我們也可以通過手工的方式來完成10進制轉(zhuǎn)2進制的完整過程。

基本做法是:將10進制數(shù)字除以2,并取得余數(shù),如果除得的商不為0,則繼續(xù)除以2,并繼續(xù)去的余數(shù),直到商為0。然后將所有取得的余數(shù),按“倒序?qū)懗觥?,就是對?yīng)的2進制數(shù)字:

PHP的數(shù)據(jù)類型

 

·        十進制轉(zhuǎn)八進制decoct(),除8取余倒著寫

使用php系統(tǒng)函數(shù): 

$r1 =  decoct(十進制數(shù)字);     //結(jié)果是一個8進制數(shù)字字符串。

PHP的數(shù)據(jù)類型

我們也可以通過手工的方式來完成10進制轉(zhuǎn)8進制的完整過程。

基本做法是:將10進制數(shù)字除以8,并取得余數(shù),如果除得的商不為0,則繼續(xù)除以8,并繼續(xù)去的余數(shù),直到商為0。然后將所有取得的余數(shù),按“倒序?qū)懗觥保褪菍?yīng)的8進制數(shù)字:

PHP的數(shù)據(jù)類型

·        十進制轉(zhuǎn)十六進制dechex(),除16取余倒著寫

16進制的數(shù)字包括如下(從0開始):

0     1     2     3     4     5     6     7     8     9     A     B     C     D     E     F

對應(yīng)10進制其實是:

0     1     2     3     4     5     6     7     8     9     10    11    12    13    14    15

 

系統(tǒng)函是:dechex(十進制數(shù)字),結(jié)果是16進制數(shù)字字符串。

PHP的數(shù)據(jù)類型

手工運算:

基本做法是:將10進制數(shù)字除以16,并取得余數(shù),如果除得的商不為0,則繼續(xù)除以16,并繼續(xù)去的余數(shù),直到商為0。然后將所有取得的余數(shù),按“倒序?qū)懗觥保褪菍?yīng)的16進制數(shù)字:

 

PHP的數(shù)據(jù)類型

 

·        二進制轉(zhuǎn)十進制bindec(),每位數(shù)值乘以2的權(quán)值然后相加

先理解一個“權(quán)值”概念:

就是某位數(shù)字上的該數(shù)字所代表的數(shù)的大小。比如:

10進制數(shù)字1234,其代表:1*10 3+2*102 + 3*101  +4*100  =  1000+ 200 + 30 + 4;

這里,10 3, 102,101,等等,就稱為權(quán)值。

 

二進制轉(zhuǎn)10進制,就是將每位數(shù)值乘以對應(yīng)位上的權(quán)值,然后相加得到的結(jié)果。

用系統(tǒng)函數(shù)是:

$v1  = bindec(“二進制數(shù)字字符串”);//得到的結(jié)果是10進制數(shù)字

PHP的數(shù)據(jù)類型

結(jié)果:s1 = 86 , 其類型為:integer

 

手工轉(zhuǎn)換:

二進制數(shù)字的權(quán)值,從右到左,分別是:

20, 21, 22, 23, 24, 25,.....

即分別是(10進制大?。?/p>

1, 2,  4,  8,  16,32

手工計算:

1010110

=1*26 + 0*XX  + 1*24 + 0*XX  + 1*22 + 1*21 + 0 //說明,其中XX表示無所謂的數(shù)字值

=64 + 0 + 16 + 0 + 4 + 2 + 0

=86

 

·        八進制轉(zhuǎn)十進制octdec() ,每位數(shù)值乘以8的權(quán)值然后相加

用系統(tǒng)函數(shù)是:

$v1  = octdec(“8進制數(shù)字字符串”);//得到的結(jié)果是10進制數(shù)字

PHP的數(shù)據(jù)類型

結(jié)果:s1 = 668,其類型為:integer

手工算法統(tǒng)2進制轉(zhuǎn)換為10進制,略。

·        十六進制轉(zhuǎn)十進制hexdec() ,每位數(shù)值乘以16的權(quán)值然后相加

用系統(tǒng)函數(shù)是:

$v1  = hexdec(“16進制數(shù)字字符串”);//得到的結(jié)果是10進制數(shù)字

PHP的數(shù)據(jù)類型

結(jié)果:s1 = 4779,其類型為:integer

 

·        注意:十進制轉(zhuǎn)為其他進制結(jié)果是字符串,其他進制轉(zhuǎn)為十進制要求給定數(shù)據(jù)是字符串形式

思考:

$v1 = bindec(123);//理解過程:bindec(“123”) =>bindec(“1”)=>1

$v2 = bindec(0123);//理解:0123是8進制數(shù)字,其10進制值為:83,再當(dāng)作二進制字符串就是“83”,結(jié)果就只能是0

$v3 = bindec(“0123”);//理解:因為直接就是字符串了,就當(dāng)二進制字符串用,結(jié)果是1

$v4 = octdec(0123);      //理解:0123是8進制數(shù)字,其10進制值為:83,再當(dāng)作8進制字符串就是“83”,但8進制中沒有“8”這個數(shù)字,就只識別出一個“3”這個數(shù)字

以下代碼測試:

PHP的數(shù)據(jù)類型

 

浮點類型float, double, real

有兩種寫法:

$v1 = 1.234;   //帶小數(shù)點,,就是浮點類型

$v2 = 1.234E3;//含義是:1.234乘以10的3次方,即1234,帶E的形式就是浮點數(shù)

$v3 = 1234E3;//結(jié)果值是1234000,但也是一個浮點數(shù)。

關(guān)于浮點數(shù)的細節(jié)知識:

    十進制小數(shù)轉(zhuǎn)二進制小數(shù)的做法:乘2并順序取整數(shù)部分

PHP的數(shù)據(jù)類型

浮點數(shù)不應(yīng)該直接進行大小比較。因為浮點數(shù)在系統(tǒng)內(nèi)部(CPU級別),很可能都是不精確表達。要想進行比較,我們只能考慮自己應(yīng)用中的精度要求的基礎(chǔ)上,將其轉(zhuǎn)換為整數(shù)進行比較。

通常的做法是:乘以10的精度位數(shù)數(shù)次方,比如精度要求3位有效數(shù)字,則乘以10的3次方。

PHP的數(shù)據(jù)類型

當(dāng)整數(shù)運算的結(jié)果超出整數(shù)的范圍后,會自動轉(zhuǎn)換為浮點數(shù)。

整數(shù)的范圍在32位操作系統(tǒng)下,大約正負20多億。

字符串類型 String

   JS中雖然有2種字符串表達形式,但也應(yīng)該理解為是一種字符串:

        var str1 = '單引號字符串';

        var str2 = "雙引號字符串"; 

    但在php中,單引號與雙引號字符串是有不同細節(jié)含義的字符串:

    

PHP中有4種字符串形式:

單引號字符串:

PHP的數(shù)據(jù)類型

雙引號字符串:

PHP的數(shù)據(jù)類型

nowdoc(單引號)定界符字符串:

PHP的數(shù)據(jù)類型

heredoc(雙引號)定界符字符串:

PHP的數(shù)據(jù)類型

布爾類型:bool , boolean

    用于標(biāo)識某種只有兩個狀態(tài)值的數(shù)據(jù):true , false

    在應(yīng)用中,我們常常會(需要)直接將一個數(shù)據(jù)(可能是各種其它類型)當(dāng)作一個布爾值來進行判斷。

    那么此時其實發(fā)生的是:會將數(shù)據(jù)隱含轉(zhuǎn)換為布爾值。

最常見的語法形式是:

    if(某數(shù)據(jù)/變量) {

        ...........

    }

那么,在php中,其它各種數(shù)據(jù),隱含轉(zhuǎn)換為布爾值的時候,會當(dāng)作false的有:0 , 0.0 ,null , "", "" , "0" , array() , 及未定義的變量。其它數(shù)據(jù)當(dāng)作true!

當(dāng)前文章:PHP的數(shù)據(jù)類型
網(wǎng)站鏈接:http://bm7419.com/article26/igepcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃、品牌網(wǎng)站設(shè)計、自適應(yīng)網(wǎng)站網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司