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的資訊,型別和值即長度 ...