- 標(biāo)量類(lèi)型:
int、float、string、bool - 復(fù)合類(lèi)型:
array、object - 特殊類(lèi)型:
null、resource
標(biāo)量類(lèi)型
-
整數(shù)類(lèi)型 int integer
1. 十進(jìn)制:$num=998;
2. 八進(jìn)制:$num=0567;
3. 十六進(jìn)制:$0x123;
| 簡(jiǎn)寫(xiě) | 描述 |
|---|---|
| dec | 十進(jìn)制 |
| bin | 二進(jìn)制 |
| oct | 八進(jìn)制 |
| hex | 十六進(jìn)制 |
- 進(jìn)制轉(zhuǎn)換:
- 十進(jìn)制轉(zhuǎn)換:轉(zhuǎn)換的數(shù)據(jù)類(lèi)型為字符串;
? 十進(jìn)制轉(zhuǎn)二進(jìn)制 decbin():$num1=decbin(998);
? 十進(jìn)制轉(zhuǎn)八進(jìn)制 decoct() :$num1=decoct(998);
? 十進(jìn)制轉(zhuǎn)十六進(jìn)制 dechex():$num1=dechex(998);
? 模擬轉(zhuǎn)換:除以進(jìn)制數(shù)(2、8、16)的余數(shù)按倒敘方式重寫(xiě)的結(jié)果。
$a=12;
12/2=6 ..0
6/2=3 ..0
3/2=1 ..1
1/2=0 ..1
12的二進(jìn)制為:1100
- 二進(jìn)制轉(zhuǎn)換:轉(zhuǎn)換的數(shù)據(jù)類(lèi)型為整型;
? 二進(jìn)制轉(zhuǎn)十進(jìn)制 bindec():$n=bindec("10101110");
? 二進(jìn)制轉(zhuǎn)八進(jìn)制 binoct():$n=binoct("10101110");
? 二進(jìn)制轉(zhuǎn)十六進(jìn)制 binhex():$n=binhex("10101110");
? 模擬進(jìn)制轉(zhuǎn)換運(yùn)算:將每位數(shù)乘以對(duì)應(yīng)權(quán)值,將結(jié)果相加;
$a="10101110";
0*21,1*22,1*23....;
= 128 + 0 + 32 + 0 + 8 + 4 + 2 + 0;
轉(zhuǎn)換結(jié)果為:174
- 八進(jìn)制轉(zhuǎn)換:轉(zhuǎn)換的數(shù)據(jù)類(lèi)型為整型;
? 八進(jìn)制轉(zhuǎn)十進(jìn)制 octdec():$n=octdec("077");
? 八進(jìn)制轉(zhuǎn)二進(jìn)制 octbin():$n=octbin("077");
? 八進(jìn)制轉(zhuǎn)十六進(jìn)制 octhex():$n=octhex("077");
? 模擬進(jìn)制轉(zhuǎn)換運(yùn)算:將每位數(shù)乘以對(duì)應(yīng)權(quán)值,將結(jié)果相加;
//與二進(jìn)制運(yùn)算過(guò)程相仿
$a="077";
7*81,7*82;
= 56+ 7;
轉(zhuǎn)換結(jié)果為:63
十六進(jìn)制轉(zhuǎn)換:二進(jìn)制、八進(jìn)制相仿;
浮點(diǎn)類(lèi)型 float double real
1. 小數(shù)點(diǎn):$num=1.234;
2. 科學(xué)記數(shù):$num=1.234E3; //值為 1234; 模擬運(yùn)算:1.234 * 103;
3. 科學(xué)記數(shù):$num=1234E3; //值為 1234000;
盡管結(jié)果是整數(shù),但是也屬于浮點(diǎn)類(lèi)型。浮點(diǎn)類(lèi)型的數(shù)值精度(模擬二進(jìn)制):
$num=0.6;
0.6*2=1.2 //1
0.2*2=0.4 //0
0.4*2=0.8 //0
0.8*2=1.6 //1
0.6*2=1.2 //1
...死循環(huán)...
結(jié)果為:0.1001 1001 1001...
——————
$num2=0.625;
0.625*2=1.25 //1
0.25*2=0.5 //0
0.5*2=1 //1
結(jié)果為:0.101
- 絕大部分小數(shù)無(wú)法完整轉(zhuǎn)換成二進(jìn)制,而電腦的運(yùn)算恰恰是由二進(jìn)制構(gòu)成。因此浮點(diǎn)數(shù)不適合用來(lái)進(jìn)行比較。
$n1=6.9;
if($n1/3==2.3){ // error;
echo "ok";
}else{
echo "error";
}
// 在這種情況下通常使用固定精度判斷,假設(shè)要求 3位小數(shù)
if(round($n1*1000/3)==round(2.3*1000)){ // ok;
echo "ok";
}else{
echo "error";
}
-
字符串類(lèi)型 string
PHP 中有四種表示方式,而且各不相同: - 單引號(hào):不能識(shí)別變量,方便輸出完整的字符;
可以識(shí)別的轉(zhuǎn)義符:\\\ \'; - 雙引號(hào):可以自動(dòng)識(shí)別變量等;
可以識(shí)別的轉(zhuǎn)義符:\\\ \" \n \r \t \$; - nowdoc (單引號(hào))定界符:適用于輸出大段的 HTML、JS代碼等;
1. 結(jié)束標(biāo)示符必須與開(kāi)始保持一致;
2. 結(jié)束標(biāo)示符必須在所在行最前面;
3. 結(jié)束標(biāo)示符所在行只能寫(xiě)標(biāo)示符和結(jié)束分號(hào);
<?php
$str=<<< 'shuaige' //必須加上''
不解析任何轉(zhuǎn)義;
$sss \\ \t \n;
<p>這里有p標(biāo)簽 美女 這里有p標(biāo)簽</p>
shuaige; //最前方
echo "<p>$str</p>";
?>
- heredoc (雙引號(hào))定界符:起始標(biāo)識(shí)名可以用 " " 或者直接聲明。
1. 結(jié)束標(biāo)示符必須與開(kāi)始保持一致;
2. 結(jié)束標(biāo)示符必須在所在行最前面;
<?php
$str=<<< meinv //可直接書(shū)寫(xiě),或加 ""
與雙引號(hào)字符串轉(zhuǎn)義相近;
<p>這里有p標(biāo)簽 美女 這里有p標(biāo)簽</p>
meinv;
echo "<p>$str</p>";
?>
-
布爾類(lèi)型 bool boolean
表達(dá)了真值,可以為 TRUE 或 FALSEl,轉(zhuǎn)換規(guī)則 參照。
復(fù)合類(lèi)型
-
數(shù)組類(lèi)型 array
數(shù)組能夠在單獨(dú)的變量名中存儲(chǔ)一個(gè)或多個(gè)值。 - 在 PHP 中,數(shù)組的下標(biāo)可以使用 整數(shù) 或 字符串;
1. 數(shù)字下標(biāo)常被稱(chēng)為 "索引";
2. 字符串下標(biāo)常被稱(chēng)為 "鍵名";
3. 還可創(chuàng)建包含一個(gè)或多個(gè)數(shù)組的多維數(shù)組; - 創(chuàng)建數(shù)組:
? 自動(dòng)分配索引:
$arrs=array("美女","帥哥","美哥");
//自動(dòng)分配的下標(biāo): 0、1、2
? 手動(dòng)分配索引:
$a[0]="我才";
$a[2]="fuck";
$a[5]=111;
? 創(chuàng)建關(guān)聯(lián)數(shù)組:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
// or
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
- count() 函數(shù):獲得數(shù)組的長(zhǎng)度;
$arrs=array("美女","帥哥","美哥");
echo count($arrs);
- 遍歷數(shù)組:
? 遍歷索引數(shù)組:
$arrs=array("美女","帥哥","美哥");
$len=count($arrs);
for($i=0;$i<$len;$i++){
echo "$arrs[$i]";
echo "<br/>";
}
? 遍歷關(guān)聯(lián)數(shù)組:
$age=array("張三"=>"998","貂蟬"=>"18","SB"=>"22");
foreach($age as $i=>$val) {
echo "Key=" . $i . ", Value=" . $val;
}
-
object 對(duì)象類(lèi)型
JS 中對(duì)象除自己創(chuàng)建,還有內(nèi)置的 window、location,標(biāo)簽對(duì)象;
PHP 中的對(duì)象通常均指自定義創(chuàng)建的對(duì)象;
<?php
//定義一個(gè)類(lèi)
class girl{
public $name="美女";
public $age=22;
public function say(){
echo "hello!";
echo "我叫".$this->$name;
echo "今年".$this->age;
}
}
$v=new girl(); //創(chuàng)建一個(gè)對(duì)象
$v->name="小花"; //設(shè)定名稱(chēng)
$v->age=18; //設(shè)定年齡
$v->say(); //調(diào)用函數(shù)方法
?>
特殊類(lèi)型
資源類(lèi)型 resource
指對(duì)外部資源的引用,比如數(shù)據(jù)庫(kù)、文件、圖片;PHP 通過(guò)語(yǔ)法(或方式)對(duì)其進(jìn)行操作。空類(lèi)型 null
指計(jì)算機(jī)編程中的 "概念" 類(lèi)型,表示沒(méi)有數(shù)據(jù)、沒(méi)有意義。
類(lèi)型轉(zhuǎn)換
- 自動(dòng)類(lèi)型轉(zhuǎn)換:是弱類(lèi)型語(yǔ)言中一個(gè)非常方便的特性。
- if(—數(shù)據(jù)—):轉(zhuǎn)換為布爾類(lèi)型;
- 算術(shù)運(yùn)算符:轉(zhuǎn)換為數(shù)值類(lèi)型;
- 連接運(yùn)算符:轉(zhuǎn)換為字符串類(lèi)型;
- 比較運(yùn)算符:轉(zhuǎn)換為布爾、數(shù)值類(lèi)型;
- 強(qiáng)制類(lèi)型轉(zhuǎn)換:通過(guò)語(yǔ)法讓數(shù)據(jù)轉(zhuǎn)換成指定的類(lèi)型。
<?php
$v1=(int)7.8;
$v2=(float)$v1;
echo $v1.",v1的數(shù)據(jù)類(lèi)型為".getType($v1)."<br/>";
echo $v2.",v1的數(shù)據(jù)類(lèi)型為".getType($v2);
- 相關(guān)的系統(tǒng)函數(shù)
| 類(lèi)型 | 描述 |
|---|---|
| var_dump() | 輸出變量的完整信息。 |
| getType() | 獲取變量的類(lèi)型名稱(chēng),結(jié)果返回字符。 |
| setType() | 設(shè)置變量的類(lèi)型:setType($num,"float")
|
| isset() | 用來(lái)判斷一個(gè)變量是否存在。 |
| empty() | 判斷一個(gè)數(shù)據(jù)是否為空。 |
| unset() | 刪除、銷(xiāo)毀一個(gè)變量。 |
| is_xx() | 判斷一個(gè)變量是否為某種數(shù)據(jù)類(lèi)型。 |
| is_int()、is_float()、is_numeric()...... 等等。 |
以上詳細(xì)判斷規(guī)則可以 參照。