PHP開發(fā)基礎(chǔ)教程之?dāng)?shù)據(jù)類型
概括:
PHP 的數(shù)據(jù)類型有8種,分別為:String(字符串), Integer(整型), Float(浮點(diǎn)型), Boolean(布爾型), Array(數(shù)組), Object(對(duì)象), NULL(空值), resource(資源)。下面逐一介紹:
一、PHP 字符串
字符串就是一段字符,更通俗的來講就是一段話,這段話可以很長(zhǎng),也可以很短。
1.在PHP里面中有三種聲明字符串的方式
用單引號(hào)聲明
用英文半角狀態(tài)下的單引號(hào)來把字符串包圍起來
<?php //聲明字符串變量$str $str= 'PHP 是一種創(chuàng)建動(dòng)態(tài)交互性站點(diǎn)的強(qiáng)有力的服務(wù)器端腳本語言'; //輸出字符串 echo $str; ?>
用雙引號(hào)聲明
<?php //聲明字符串變量$str $str= “PHP 是一種創(chuàng)建動(dòng)態(tài)交互性站點(diǎn)的強(qiáng)有力的服務(wù)器端腳本語言”; //輸出字符串 echo $str; ?>
用字界符聲明(需要輸入非常大段的字符串時(shí)使用)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $str = <<<DJ PHP 是 一種創(chuàng)建動(dòng)態(tài)交互<br/> 性站點(diǎn)的強(qiáng)有力的服務(wù)器端 <i>腳本語言</i> 我想說:<h1>PHP簡(jiǎn)介</h1> DJ; echo $str; ?> </body> </html>
2.雙引號(hào)和單引號(hào)有什么區(qū)別
?雙引號(hào)解析變量,但是單引號(hào)不解析變量。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //聲明變量 $name="小明"; $age="24"; //放入字符串中 $str1="我叫$name ,今年$age 歲,很高興認(rèn)識(shí)大家"; $str2='我叫$name ,今年$age 歲,很高興認(rèn)識(shí)大家'; //輸出字符串 echo $str1; echo "<br/>"; echo $str2; ?> </body> </html>
通過上面可以得出結(jié)論:雙引號(hào)執(zhí)行變量,而單引號(hào)不執(zhí)行變量
注:雙引號(hào)需要解析變量,因此雙引號(hào)的效率沒有單引號(hào)高
?在雙引號(hào)里面插入變量,變量后面如果有英文或中文字符,它會(huì)把這個(gè)字符和變量拼接起來,視為一整個(gè)變量。一定要在變量后面接上特殊字符,例如空格等分開。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //聲明變量 $a="php.com"; $str1="$a歡迎您"; $str2="$a 歡迎您"; echo $str1; echo "<br/>"; echo $str2; ?> </body> </html>
從報(bào)錯(cuò)中可以看出,第一個(gè)把“a歡迎您”當(dāng)成了一個(gè)變量,第二個(gè)正常輸出。
?如果在雙引號(hào)里面插變量的時(shí)候,后面不想有空格,可以拿大括號(hào)將變量包起來。
稍微改動(dòng)下上面的例子
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //聲明變量 $a="php.com"; $str1="$a 歡迎您"; $str2="{$a}歡迎您"; echo $str1; echo "<br/>"; echo $str2; ?> </body> </html>
?雙引號(hào)解析轉(zhuǎn)義字符,單引號(hào)不解析轉(zhuǎn)義字符。但,單引號(hào)能解析' 和
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //聲明字符串 $str1 = "改變世界之前\n請(qǐng)先\t改變你自己"; $str2 = '改變世界之前\n請(qǐng)先\t改變你自己'; echo $str1; echo "<hr/>"; echo $str2; ?> </body> </html>
注:關(guān)于“單引號(hào)能解析' 和”,大家殼子自己動(dòng)手嘗試著去做下
單引號(hào)效率高于雙引號(hào),盡可能使用單引號(hào)
雙號(hào)和單引號(hào)可以互插?。?!雙引號(hào)當(dāng)中插入單引號(hào),單引號(hào)當(dāng)中插入變量,這個(gè)變量會(huì)被解析。
實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $a='黃河'; $str="白日依山盡,'$a'入海流"; echo $str; ?> </body> </html>
注:大家可以嘗試下雙引號(hào)里面套雙引號(hào)會(huì)出現(xiàn)什么情況
神奇的字符串拼接膠水——(.)點(diǎn),用來拼接字符串。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //聲明變量 $name="小明"; $age="24"; //放入字符串中 $str1="我叫$name ,今年$age 歲,很高興認(rèn)識(shí)大家"; $str2='我叫$name ,今年$age 歲,很高興認(rèn)識(shí)大家'; //輸出字符串 echo $str1; echo "<br/>"; echo $str2; ?> </body> </html>
這是之前的一個(gè)例子,前面提到過雙引號(hào)能夠解析變量,但是效率沒有單引號(hào)高,我現(xiàn)在想既能夠解析變量,又效率高,那就只有依靠(.)來幫助我們了
實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //聲明變量 $name="小明"; $age="24"; //放入字符串中 $str='我叫'.$name.' ,今年'.$age.' 歲,很高興認(rèn)識(shí)大家'; //輸出字符串 echo $str; ?> </body> </html>
(.)點(diǎn)還可以用來連接多個(gè)字符串
實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //聲明變量 $str1 = '白日依山盡<br/>'; $str2 = '黃河入海流<br/>'; $str3 = '欲窮千里目<br/>'; $str4 = '更上一層樓<br/>'; echo $str1.$str2.$str3.$str4; ?> </body> </html>
我們將定界符聲明字符串視為雙引號(hào)一樣的功能來看待。
實(shí)例:
<?php $a = '宣布對(duì)用戶提現(xiàn)收費(fèi)'; $b = '支付行業(yè)巨頭的收費(fèi)行動(dòng)'; $str = <<<DJ 支付寶 $a 這也是\t微信在年初宣布提現(xiàn)收費(fèi)之后 又一 '$b' 很<br /> 多人\n質(zhì)疑 <i>互聯(lián)網(wǎng)公司</i> 所提倡的免費(fèi)<b>商業(yè)模式</b>難道走到了盡頭 DJ; echo $str; ?>
大家可以執(zhí)行發(fā)現(xiàn)$,$,tn都可以執(zhí)行,雙引號(hào)單引號(hào)都能顯示。這就是定界符的特點(diǎn)。
3.關(guān)于字符串的兩個(gè)實(shí)用的函數(shù)
strlen(字符串)返回字符串的長(zhǎng)度(字符數(shù))
strpos(被查找的字符串,查找的字符或者文本)如果在字符串中找到匹配,該函數(shù)會(huì)返回第一個(gè)匹配的字符位置。如果未找到匹配,則返回 FALSE。
實(shí)例:
<?php //輸出一個(gè)字符串的長(zhǎng)度 echo strlen("Hello world"); echo "<br/>"; //在字符串 "Hello world!" 中查找文本 "world",字符串中第一個(gè)字符的位置是 0,而不是 1。 echo strpos("Hello world","world") ?>
注:字符串中首字符的位置是 0 而不是 1
完整字符串函數(shù),請(qǐng)查看PHP參考手冊(cè)
二、PHP 整型
整數(shù)就是一個(gè)沒有小數(shù)的數(shù)字。
整數(shù)規(guī)則:
?整數(shù)必須至少有一個(gè)數(shù)字 (0-9)
?整數(shù)不能包含逗號(hào)或空格
?整數(shù)是沒有小數(shù)點(diǎn)的
?整數(shù)可以是正數(shù)或負(fù)數(shù)
?整型可以用三種格式來指定:十進(jìn)制, 十六進(jìn)制( 以 0x 為前綴)或八進(jìn)制(前綴為 0)。
在以下實(shí)例中我們將測(cè)試不同的數(shù)字。 PHP var_dump() 函數(shù)返回變量的數(shù)據(jù)類型和值:
注:var_dump() 是一個(gè)函數(shù)。向括號(hào)()中間插入變量。這個(gè)函數(shù),會(huì)打印出來數(shù)據(jù)類型,還會(huì)對(duì)應(yīng)顯示變量的長(zhǎng)度和值
實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //定義變量 $x = 5985; $y = -345; // 負(fù)數(shù) $z = 0x8C; // 十六進(jìn)制數(shù) $w = 047; // 八進(jìn)制數(shù) //輸出變量 var_dump($x); echo "<br>"; var_dump($y); echo "<br>"; var_dump($z); echo "<br>"; var_dump($w); ?> </body> </html>
三、浮點(diǎn)型
所謂浮點(diǎn)類型,既為我們數(shù)學(xué)里面的小數(shù)。
下面通過實(shí)例,測(cè)試不同的數(shù)字
實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //定義變量 $x = 10.365; $y = 2.4e3; $z = 8E-5; //輸出變量 var_dump($x); echo "<br>"; var_dump($y); echo "<br>"; var_dump($z); ?> </body> </html>
四、布爾型
所謂布爾,可以理解為事物的兩面性,有真就有假,有對(duì)就有錯(cuò),當(dāng)前的計(jì)算機(jī)系統(tǒng)使用的基本上是二進(jìn)制系統(tǒng),即為0和1的組合
布爾型只有兩個(gè)值: TRUE 或 FALSE
$x=true;
$y=false;
常用于條件判斷,在以后的學(xué)習(xí)中,你會(huì)經(jīng)常和他打交道。
注:true和false外面不要加引號(hào)
類型轉(zhuǎn)換:
一下情況會(huì)被轉(zhuǎn)換為false
布爾值=false
?整數(shù)=0
?浮點(diǎn)數(shù)=0.0
空數(shù)組
?沒有變量成語的對(duì)象
?變量值為空
其余情況下,基本會(huì)被轉(zhuǎn)換為true
五、數(shù)組
上面定義的變量只能存儲(chǔ)一個(gè)值,如果想要存儲(chǔ)多個(gè)值的話,則就要用到數(shù)組了
在以下實(shí)例中創(chuàng)建了一個(gè)數(shù)組, 然后使用 PHP var_dump() 函數(shù)返回?cái)?shù)組的數(shù)據(jù)類型和值:
實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //定義變量 $fruits=array("蘋果","香蕉","梨子"); //輸出變量 var_dump($fruits); echo gettype($fruits); ?> </body> </html>
大家先對(duì)數(shù)組有個(gè)了解,掌握基本聲明一個(gè)數(shù)組,判斷是否是數(shù)組類型,其他的在后面有專門一章來討論數(shù)組。
六、對(duì)象
對(duì)象數(shù)據(jù)類型也可以用于存儲(chǔ)數(shù)據(jù)。
?在 PHP 中,對(duì)象必須聲明。
首先,你必須使用class關(guān)鍵字聲明類對(duì)象。類是可以包含屬性和方法的結(jié)構(gòu)。
?然后我們?cè)陬愔卸x數(shù)據(jù)類型,然后在實(shí)例化的類中使用數(shù)據(jù)類型:
來看個(gè)實(shí)例:
<?php //定義一個(gè)Car 類 class Car { var $color; function Car($color="green") { $this->color = $color; } function what_color() { return $this->color; } } //實(shí)例化Car類 $car = new Car; //輸出查看類型 var_dump($car); ?>
對(duì)象這個(gè)暫時(shí)大家不用深究,以后會(huì)慢慢了解,暫時(shí)只要看到這個(gè)object知道是對(duì)象就可以了。
七、空值
NULL 值表示變量沒有值。NULL 是數(shù)據(jù)類型為 NULL 的值。空(null)不是false,不是0,也不是空格。
1.null 產(chǎn)生的三種情況:
通過變量賦值明確指定為變量的值為NULL
一個(gè)變量沒有給任何值
?使用函數(shù)unset()將變量銷毀掉
實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //聲明變量為null $n = null; var_dump($n); //var_dump顯示輸出變量$meiyou,看看結(jié)果是什么? var_dump($a); //聲明一個(gè)變量$b的值為字符串的手機(jī) $b = '手機(jī)'; //unset銷毀掉一個(gè)變量 unset($b); var_dump($b); ?> </body> </html>
2.empty和isset 兩個(gè)函數(shù)的區(qū)別
empty()函數(shù)
empty()可以向括號(hào)中間傳入一個(gè)變量。這個(gè)變量的值如果為false或者為null的話,返回true。
實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $a=null; if(empty($a)){ echo '這個(gè)變量是空'; }else{ echo '這個(gè)變量不是空'; } ?> </body> </html>
當(dāng)$a=null 時(shí)empty返回true。
?isset()函數(shù)
isset()可以向括號(hào)中間傳入一個(gè)或者多個(gè)變量,變量與變量間用逗號(hào)分開。只要有有一個(gè)變量為null,則返回false。否則,則返回true。
實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //傳入一個(gè)變量 $a=false; $b=isset($a); var_dump($b); echo "<hr/>"; //傳入多個(gè)變量 $b=10; $c=false; $d=null; $e=isset($b,$c,$d); var_dump($e); echo PHP_VERSION; echo __LINE__; ?> </body> </html>
注:unset()這個(gè)函數(shù)的功能是毀掉變量。unset(變量)括號(hào)中間插入想要?dú)У舻淖兞棵?,這個(gè)變量就會(huì)被毀掉,大家可以自己動(dòng)手銷毀,然會(huì)用var_dump()函數(shù)說出來看看效果。
八、資源類型
資源類型很多初學(xué)者覺得比較難以理解。因?yàn)橘Y源類型打印出來只能夠看到一個(gè)英文的resource。其他的什么在電腦上都不能顯示出來,而他有客觀存在。
其實(shí),資源類型很簡(jiǎn)單。我們針對(duì)詞來進(jìn)行說明。
電腦里面的資源是指:
?word,excel等文件
?有人收藏的美女圖片和我們的自拍照片等圖片
?音樂
?某些人愛看的AVI小電影
?打開的網(wǎng)頁
數(shù)據(jù)庫
... ...等等
我們打開一個(gè)圖片,用PHP來操作它,我們就是操作的一個(gè)資源。
我們打開的數(shù)據(jù)庫連接,我們需要連接數(shù)據(jù)庫,數(shù)據(jù)庫就是我們操作的資源。
包括網(wǎng)絡(luò)連接,連接后發(fā)送郵件,我們也可以認(rèn)為是一個(gè)資源。
注:理解資源就提操作我們可見和不可見的文件、網(wǎng)絡(luò)和數(shù)據(jù)。我們?cè)谝院蟮恼鹿?jié)中,操作圖片和網(wǎng)絡(luò)的時(shí)候大家會(huì)有更為深刻的印象。
九、查看和判斷數(shù)據(jù)類型
1.查看數(shù)據(jù)類型
在以后的學(xué)習(xí)和工作中,進(jìn)行需要知道一個(gè)數(shù)據(jù)的數(shù)據(jù)類型,通過以下兩個(gè)函數(shù)可以知道
gettype(傳入一個(gè)變量) 能夠獲得變量的類型
?var_dump(傳入一個(gè)變量) 輸出變類型和值
實(shí)例:
<?php //聲明變量,輸出其類型 $str = 9.99; $type = gettype($str); echo $type; echo "<br/>"; $str1 = true; $type1 = gettype($str1); echo $type1; echo "<br/>"; //聲明變量,輸出其類型和值 $str2 = "霸都"; var_dump($str2); echo "<br/>"; $arr = array(1,23,4); var_dump($arr); ?>
注:大家可以再嘗試輸出下其他幾種類型
2.判斷數(shù)據(jù)類型
我們使用is_* 系列函數(shù)。 is_types這一系列的函數(shù),來進(jìn)行判斷某個(gè)東西是不是某個(gè)類型。如果是這個(gè)類型返回真,不是這個(gè)類型返回假。
?is_int 是否為整型
?is_bool 是否為布爾
?is_float 是否是浮點(diǎn)
?is_string 是否是字符串
?is_array 是否是數(shù)組
?is_object 是否是對(duì)象
?is_null 是否為空
?is_resource 是否為資源
?is_scalar 是否為標(biāo)量
?is_numeric 是否為數(shù)值類型
?is_callable 是否為函數(shù)
實(shí)例:
<?php $fo = false; var_dump(is_bool($fo)); var_dump(is_null($fo)); $str='18.8'; var_dump(is_string($str)); ?>
注:大家可以嘗試其他幾個(gè),看看輸出結(jié)果