一共8種類型。
基本類型4種
整型(int,integer)
1.4種寫法
$n1 = 123 //10進(jìn)制
$n2 = 0123 //8進(jìn)制
$n3 = 0x123 //16進(jìn)制
$n4 = 0b123 //2進(jìn)制
2.進(jìn)制轉(zhuǎn)換
bin二進(jìn)制,oct八進(jìn)制,dec10進(jìn)制,hex十六進(jìn)制。只有2種轉(zhuǎn)換,10進(jìn)制轉(zhuǎn)其他,其他轉(zhuǎn)10進(jìn)制。不能任意組合轉(zhuǎn),8進(jìn)制轉(zhuǎn)2進(jìn)制之類的是不存在的
10進(jìn)制轉(zhuǎn)其他(輸進(jìn)數(shù)字,返回的都是字符串!字符串!)
$n = 123;
$nc2 = decbin($n); //10進(jìn)制轉(zhuǎn)2進(jìn)制
$nc8 = decoct($n); //10進(jìn)制轉(zhuǎn)8進(jìn)制
$nc16 = dechex($n); //10進(jìn)制轉(zhuǎn)16進(jìn)制
echo "$nc2 <br/>"; //1111011
echo "$nc8 <br/>"; //173
echo "$nc16"; //7b
其他轉(zhuǎn)10進(jìn)制(輸進(jìn)字符串!字符串!返回字符串!)
$n2_10 = bindec('10111'); //2進(jìn)制轉(zhuǎn)10進(jìn)制
$n8_10 = octdec('123'); //8進(jìn)制轉(zhuǎn)10進(jìn)制
$n16_10 = hexdec('123'); //16進(jìn)制轉(zhuǎn)10進(jìn)制
如果你在代碼種寫2進(jìn)制、8進(jìn)制、16進(jìn)制形式的數(shù),echo出來會自動轉(zhuǎn)換成10進(jìn)制輸出的
$n2 = 0b10101011111;
$n8 = 0123;
$n16 = 0x123;
echo "$n2<br>"; //1375
echo "$n8<br>"; //83
echo "$n16<br>"; //291
#題外話:echo "$n2<br>"還必須用雙引號,單引不行,單引會將$n2當(dāng)作字符串解釋0.0
補(bǔ)充一個(gè)轉(zhuǎn)換題加深理解
浮點(diǎn)型(float,double,real)
1.2種寫法
//直接寫
$v1 = 123.123;
//科學(xué)計(jì)數(shù)法,帶一個(gè)特殊符號E,凡是這種寫法的無論實(shí)際大小,都是浮點(diǎn)型
$v2 = 123.123E2 //即12312.3
$v3 = 123.123E3 //即123123,仍然為浮點(diǎn)型
$v4 = 123E3 //即123000,浮點(diǎn)型
2.浮點(diǎn)數(shù)使用細(xì)節(jié)
- 浮點(diǎn)數(shù)不應(yīng)該比較大小!浮點(diǎn)數(shù)不應(yīng)該進(jìn)行大小比較!浮點(diǎn)數(shù)不應(yīng)該進(jìn)行大小比較!(2進(jìn)制缺陷,大多數(shù)浮點(diǎn)數(shù)表達(dá)不能完全準(zhǔn)確,只能以很高的精度、接近理論值的值進(jìn)行比較。真想比較兩個(gè)浮點(diǎn)型的大小,結(jié)合所要求的精度轉(zhuǎn)化后再進(jìn)行比較)
比較8.1/3和2.7的大小
//精度要求為4
if(round(8.1/3 * 10000) == round(2.7 * 10000)){
echo ''相等!''
}
- 浮點(diǎn)型轉(zhuǎn)2進(jìn)制,乘以2按順序取整數(shù)部分就可以了
- 當(dāng)整數(shù)的運(yùn)算結(jié)果超出整數(shù)的范圍之后,會自動轉(zhuǎn)換成浮點(diǎn)型
$v = 10000;
$m1 = $v * $v;
$m2 = $m1 * $m1 * $m1;
echo PHP_INT_MAX . "<br>"; //9223372036854775807
var_dump($m1); //int(100000000)
var_dump($m2); //float(1.0E+24)
字符串(string)
1.雙引號字符串:可以識別預(yù)定義的$符和tab
2.單引號字符串:不能識別$符
3.雙引號定界符字符串
這種方法定義一個(gè)字符串的時(shí)候,最后一行,只能是標(biāo)識符和分號,其他什么都不能有!包括空格!
$str = <<<"abcd" //這是標(biāo)識符,自己定義的
這是雙引號定界符字符串!
abcd;
echo $str;
4.單引號定界符字符串:寫法和雙引號定界符字符串類似,但是它沒有任何轉(zhuǎn)義字符。
布爾型(bool,boolean)
記住幾個(gè)特殊的就行了,0、"0"、""、null、空數(shù)組、空對象、未定義變量 都是 false, 其余是 true。
復(fù)合類型2種
數(shù)組(array)
對象(object)
特殊類型2種
空類型(null)
資源類型(resource),如數(shù)據(jù)庫,每一種資源都要另外學(xué)習(xí)的
數(shù)據(jù)類型轉(zhuǎn)換
當(dāng)然也分自動轉(zhuǎn)換(基本都是數(shù)學(xué)運(yùn)算符導(dǎo)致)和強(qiáng)制轉(zhuǎn)換啦。
強(qiáng)制轉(zhuǎn)換
1.通常的轉(zhuǎn)換目標(biāo)類型是(轉(zhuǎn)對象那個(gè)貌似作用不大?) (int)、(float)、(string)、(bool)、(array)、(object)
$v = 123;
$m1 = (float)$v; //轉(zhuǎn)成浮點(diǎn)類型
$m2 = (string)$v; //轉(zhuǎn)成字符串類型
2.用方法 setType() 進(jìn)行轉(zhuǎn)換
$v = 123;
setType($v, "string");
3.專門方法轉(zhuǎn)換
intval()、floatval()、strval()
$v = 123;
$m1 = floatval($v);
$m2 = strval($v);
$a = "123";
$a1 = intval($v);