php偽資料資料型別 PHP的資料型別

2021-10-22 21:57:02 字數 3678 閱讀 9239

php的資料型別

資料型別

整體劃分

·標量型別: int, float, string, bool

·復合型別: array, object

·特殊型別: null, resouce

整數型別int, integer

3種整數表示法

·十進位制寫法:123:

$n1 = 123;

·八進位制寫法: 0123

$n2 = 0123;

·十六進製制寫法: 0x123

$n3 = 0x123;

進製轉換問題

先學習幾個單詞:

dec: 十進位制

bin:二進位制

oct:八進位制

hex:十六進製制

·十進位制轉二進位制decbin(),除2取餘倒著寫

$v1 = decbin(123); //注意:引數必須是10進製數字,轉換後的結果必然是二進位制字串。

我們也可以通過手工的方式來完成10進製轉2進製的完整過程。

基本做法是:將10進製數字除以2,並取得餘數,如果除得的商不為0,則繼續除以2,並繼續去的餘數,直到商為0。然後將所有取得的餘數,按「倒序寫出」,就是對應的2進製數字:

·十進位制轉八進位制decoct(),除8取餘倒著寫

使用php系統函式:

$r1 =  decoct(十進位制數字);//結果是乙個8進製數字字串。

我們也可以通過手工的方式來完成10進製轉8進製的完整過程。

基本做法是:將10進製數字除以8,並取得餘數,如果除得的商不為0,則繼續除以8,並繼續去的餘數,直到商為0。然後將所有取得的餘數,按「倒序寫出」,就是對應的8進製數字:

·十進位制轉十六進製制dechex(),除16取餘倒著寫

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

0     1     2     3     4     5     6     7     8     9     a     b     c     d     e     f

對應10進製其實是:

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

系統函是:dechex(十進位制數字),結果是16進製制數字字串。

手工運算:

基本做法是:將10進製數字除以16,並取得餘數,如果除得的商不為0,則繼續除以16,並繼續去的餘數,直到商為0。然後將所有取得的餘數,按「倒序寫出」,就是對應的16進製制數字:

·二進位制轉十進位制bindec(),每位數值乘以2的權值然後相加

先理解乙個「權值」概念:

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

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

這裡,10 3, 102,101,等等,就稱為權值。

二進位制轉10進製,就是將每位數值乘以對應位上的權值,然後相加得到的結果。

用系統函式是:

$v1  = bindec(「二進位制數字字串」);//得到的結果是10進製數字

結果:s1 = 86 , 其型別為:integer

手工轉換:

二進位制數字的權值,從右到左,分別是:

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

即分別是(10進製大小):

1, 2,  4,  8,  16,32

手工計算:

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

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

=86·八進位制轉十進位制octdec() ,每位數值乘以8的權值然後相加

用系統函式是:

$v1  = octdec(「8進製數字字串」);//得到的結果是10進製數字

結果:s1 = 668,其型別為:integer

手工演算法統2進製轉換為10進製,略。

·十六進製制轉十進位制hexdec() ,每位數值乘以16的權值然後相加

用系統函式是:

$v1  = hexdec(「16進製制數字字串」);//得到的結果是10進製數字

結果:s1 = 4779,其型別為:integer

·注意:十進位制轉為其他進製結果是字串,其他進製轉為十進位制要求給定資料是字串形式

思考:$v1 = bindec(123);//理解過程:bindec(「123」) =>bindec(「1」)=>1

$v2 = bindec(0123);//理解:0123是8進製數字,其10進製值為:83,再當作二進位制字串就是「83」,結果就只能是0

$v3 = bindec(「0123」);//理解:因為直接就是字串了,就當二進位制字串用,結果是1

$v4 = octdec(0123);      //理解:0123是8進製數字,其10進製值為:83,再當作8進製字串就是「83」,但8進製中沒有「8」這個數字,就只識別出乙個「3」這個數字

以下**測試:

浮點型別float, double, real

有兩種寫法:

$v1 = 1.234;   //帶小數點,,就是浮點型別

$v2 = 1.234e3;//含義是:1.234乘以10的3次方,即1234,帶e的形式就是浮點數

$v3 = 1234e3;//結果值是1234000,但也是乙個浮點數。

關於浮點數的細節知識:

十進位制小數轉二進位制小數的做法:乘2並順序取整數部分

浮點數不應該直接進行大小比較。因為浮點數在系統內部(cpu級別),很可能都是不精確表達。要想進行比較,我們只能考慮自己應用中的精度要求的基礎上,將其轉換為整數進行比較。

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

當整數運算的結果超出整數的範圍後,會自動轉換為浮點數。

整數的範圍在32位作業系統下,大約正負20多億。

PHP 資料型別

php 支援8種基本的資料型別。四種標量型別 boolean 布林型 integer 整型 float 浮點型,也稱作 double string 字串 兩種復合型別 array 陣列 object 物件 最後是兩種特殊型別 resource 資源 null null 為了確保 的易讀性,本手冊還介...

PHP 資料型別

要明確地將乙個值轉換成 boolean 用 bool 或者 boolean 來強制轉換。但是很多情況下不需要用強制轉換,因為當運算子,函式或者流程控制結構需要乙個boolean 引數時,該值會被自動轉換。參見型別轉換的判別。當轉換為 boolean 時,以下值被認為是false warning浮點數...

PHP資料型別

php的資料型別主要有 字串,整型,浮點型,邏輯型,陣列,物件和null,var dump函式會返回資料的型別和值資訊 字串是乙個字串行,要用引號標識,寫在單引號或雙引號內,如 hello world是乙個字串 x 我是乙個字串 echo x var dump x 輸出關於x的資訊,型別和值即長度 ...