php資料類型之字串
字串就是所有我們可見和不可見的字符,就是我們?nèi)粘.?dāng)中說的話,就是我想說:「小明好帥」或「鳳姐,我愛你!」。字串,就是我想表達(dá)的一切讓人看到的字元。
例如可以看到的字元:
我願變成童話你,你愛的那個(gè)王子,有房有車有票子。 <html><title></title></html>?^@@@#@?my name is xiaoshenyang
以上可見的文字,HTML標(biāo)籤、特殊字元和英文等等,我們都認(rèn)為是字串。
註:不可見字符暫時(shí)不講解,因?yàn)?,文本中無法表現(xiàn),下面的實(shí)驗(yàn)中逐漸注意即可。為了有更清晰的表現(xiàn),也可以觀看本書配套的PHP學(xué)院出品關(guān)於字串的影片。
在PHP語言中宣告字串有三種方式:
????1.用單引號宣告
????2.用雙引號宣告
????3.使用字界符宣告(需要輸入非常大段的字串時(shí)使用)
1.單引號宣告?
用英文半腳的單引號,將字串包起來
<?php //聲明字符串變量$zhifu $zhifu = '曾經(jīng)有操蛋的愛情擺在我面前,我珍惜了。當(dāng)我得到的時(shí)候才感到后悔莫及。如果非要在這段愛情前面加上一段三個(gè)字,我愿意說三個(gè)字:滾犢子'; //你可以放XAMPP指定的目錄下,新建一個(gè)文件叫str.php。然后訪問一下http://127.0.0.1/str.php試試。會不會顯示這句話。 echo $zhifu; ?>
2.雙引號宣告字串
在字串兩邊加雙引號。
<?php //聲明字符串變量$str $str = "如果非要在滾犢子前面加上一個(gè)時(shí)間的話我愿意是馬上。"; echo $str; ?>
3.字界符宣告
1).變數(shù)後面的等號寫三個(gè)小於號(<<<) 。
2).然後在<<<後面寫上字元(建議英文大寫字元)。如下例中的:ABC
3).然後換行寫上任意想寫的字元
4).寫完後,頂行。在行最開始處,再寫上<<<後面的字元和分號。如下例中的:ABC;
<?php $dingjie = <<<ABC 如果 非要在這個(gè)滾犢子 前 面<br /> 加上一段 <i>距離的話</i> 我想說:<h1>思想有多遠(yuǎn),你就跟我滾多遠(yuǎn)</h1> ABC; ?>
那雙引號和單引號有什麼差別呢?
【重要知識點(diǎn)】PHP面試題中,高機(jī)率面試題(建議背誦並實(shí)驗(yàn)三次以上)
????1.雙引號解析變量,但是單引號不解析變數(shù)。
????2.在雙引號裡面插入變量,變量後面如果有英文或中文字符,它會把這個(gè)字符和變量拼接起來,視為一整個(gè)變量。一定要在變 ? ???????量後面接有特殊字符,例如空格等分開。
????3.如果在雙引號裡面插變數(shù)的時(shí)候,後面不想有空格,可以拿大括號將變數(shù)包起來。
????4.雙引號解析轉(zhuǎn)義字符,單引號不解析轉(zhuǎn)義字符。但,單引號能解析\' 和\
????5.單引號效率高於雙引號,盡可能使用單引號
????6.雙號和單引號可以互插! ! !雙引號當(dāng)中插入單引號,單引號當(dāng)中插入變量,這個(gè)變數(shù)會被解析。
????7.神奇的字串拼接膠水-(.)點(diǎn),用來拼接字串。
????8.我們將定界符宣告字串視為雙引號一樣的功能來看待。
實(shí)驗(yàn)範(fàn)例
1.雙引號解析變量,但是單引號不解析變數(shù)
<?php //聲明變量$shouji $shouji = '為了蘋果手機(jī)去賣腎'; //在雙引號中放$shouji 然后echo 一下是什么效果呢? $str = "$shouji 會不會顯示呢?"; //輸入$str試試 echo $str; ?>
在瀏覽器中打開,運(yùn)行的結(jié)果如下:
透過上邊的例子,我們發(fā)現(xiàn)。雙引號中間的變數(shù)夠執(zhí)行顯示,我們將$str這個(gè)字串兩邊的雙引號,改為單引號試試,再看一次執(zhí)行結(jié)果:
發(fā)現(xiàn)$shouji 直接顯示出來了,而不是雙引號的顯示結(jié)果。
透過上例,我們證明了:雙引號執(zhí)行變量,而單引號不執(zhí)行變數(shù)。我們得到一個(gè)重要結(jié)論:
雙引號需要解析變量,因此雙引號的效率沒有單引號高。我們?nèi)绻麨榱烁叩男剩覀兺ǔ褂脝我枴?
2. 在雙引號裡面插入變量,變數(shù)後面如果有英文或中文字符,它會把這個(gè)字符和變數(shù)拼接起來,視為一整個(gè)變數(shù)??梢栽卺崦娼由咸厥庾址缈崭竦确珠_。
<?php $php = 'php中文網(wǎng)'; $str = "$phpaaaa"; //你會發(fā)現(xiàn)輸出$str,什么都沒有在頁面中顯示 echo $str; ?>
但是,我們在$str 宣告的這個(gè)字串中將$huaqiangu 後面接個(gè)空格再接aaaa,程式碼如下:
<?php $php = 'php中文網(wǎng)'; //中間加了空格喲 $str = "$php aaaa"; echo $str; ?>
大家發(fā)現(xiàn)執(zhí)行顯示的結(jié)果不再是空白頁面,而是這個(gè)頁面有內(nèi)容了。如下:
我們把程式碼再改改:
<?php $php = 'php中文網(wǎng)'; //中間加了空格喲 $str = "$php!aaaa"; echo $str; ?>
大家開啟一次頁面,執(zhí)行了一次程式碼看看結(jié)果是不是變成了:
php中文網(wǎng)!aaaa
因此,證明了我們的第二項(xiàng)觀點(diǎn)。
3. 如果在雙引號裡面插變數(shù)的時(shí)候,後面不想有空格,可以拿大括號將變數(shù)包起來。
那,如果我不想在後面有空格有,有特殊符號,就想直接顯示變數(shù)$huaqiangu呢? ——我們的解決方法是用大括號把變數(shù)包起來。程式碼如下:
<?php $php = 'php中文網(wǎng)'; //中間加了空格喲 $str = "{$php}aaaa"; echo $str; ?>
於是,大家會發(fā)現(xiàn)花千骨後面沒有了特殊符號,也沒有空格了,達(dá)到了我們想要的顯示結(jié)果,示範(fàn)效果如下:
4. 雙引號解析轉(zhuǎn)義字符,單引號不解析轉(zhuǎn)義字符。但,單引號能解析\' 和\
第4個(gè)字串的注意事項(xiàng)比較難以觀察,轉(zhuǎn)義字元有一些,但最常用的有:
\n 回車
\t 縮排
我們來透過實(shí)驗(yàn)先來理解\n和\t是什麼。
<?php //聲明一個(gè)字符串,記住是雙引號 $string = "每天來PHP中文網(wǎng)\n給夢想\t一個(gè)機(jī)會"; echo $string; ?>
做這一塊的實(shí)驗(yàn)中有一個(gè)注意事項(xiàng),顯示網(wǎng)頁是看不出來效果的,如下:
$string = "每天來PHP中文網(wǎng)\n給夢想\t一個(gè)機(jī)會";
\n在PHP學(xué)院的後面,在原始碼裡顯示的結(jié)果是跟按了回車鍵一樣的效果。\t在給夢想和一個(gè)機(jī)會中間。顯示的結(jié)果是有幾個(gè)空格的效果。 \t相當(dāng)於我們在電腦上按了一個(gè)tab鍵效果。
<?php //聲明一個(gè)字符串,記住是雙引號 $string = '每天來PHP中文網(wǎng)\n給夢想\t一個(gè)機(jī)會'; echo $string; ?>
執(zhí)行一次看看效果:
因此:
雙引號執(zhí)行轉(zhuǎn)義字元而單引號不執(zhí)行轉(zhuǎn)義字元。
5. 轉(zhuǎn)義字元\(反斜線的使用)
如果我們宣告一個(gè)變數(shù)$beizi ,我們想要在$beizi聲明的雙引號中間加上一個(gè)雙引號顯示輸出怎麼辦?<?php //要在$beizi的字符串中顯示一個(gè)雙引號怎么辦? $beizi = "多于絕大多數(shù)的人出生就是杯具,但是"我們在不斷的讓人生變?yōu)橄矂?quot;; echo $beizi; ?>如果真如上述所寫程式碼,程式碼會報(bào)錯。錯誤結(jié)果如下:因?yàn)樽执骸付囔督^大多數(shù)的人出生就是杯具,但是」我們在不斷的讓人生變成喜劇」必須寫在雙引號中間。而雙引號中間還有一個(gè)雙引號。一個(gè)杯具!可以了。
<?php //要在$beizi的字符串中顯示一個(gè)雙引號怎么辦? $beizi = "多于絕大多數(shù)的人出生就是杯具,但是\"我們在不斷的讓人生變?yōu)橄矂?quot;; echo $beizi; ?>
你可以再執(zhí)行一下上面的程式碼,發(fā)現(xiàn)不再報(bào)錯了。同理可推,單引號當(dāng)中要插入一個(gè)單引號顯示出來的時(shí)候,也可以在單引號聲明的字符串中的單引號前面加上(反斜線,轉(zhuǎn)義字符),將單引號的意義(限定字元區(qū)間)去掉。
<?php //要在$beizi的字符串中顯示一個(gè)雙引號怎么辦? $shengyang = 'i\'m xiaoshengyang'; echo $shengyang; ?>
6. 雙號和單引號可以互插! ! !雙引號當(dāng)中插入單引號,單引號當(dāng)中插入變量,這個(gè)變數(shù)會被解析。
程式碼如下:
<?php $legend = '猛虎'; $NoAlike = "心有'$legend',細(xì)嗅薔薇"; echo $NoAlike; ?>
執(zhí)行結(jié)果如下:
## 7. 神奇的字串拼接膠水-(.)點(diǎn),用來拼接字串。
<?php $php = 'PHP中文網(wǎng)'; //中間加了空格喲 $str = "{$php}aaaa"; echo $str; ?>上面這段程式碼是,我們曾經(jīng)說過雙引號能夠解析變量,有一個(gè)問題:
效率沒有純單引號的高
那麼問題1:我想改為效率最高的方式該怎麼辦? 問題2:我有多個(gè)字串,要拼接在一聲怎麼辦? 那,我們需要使用到神奇的膠水:(.)點(diǎn),用來拼接字串。<?php $shixi = '大學(xué)4年要好好學(xué)習(xí)<br />'; $buran = '不然連實(shí)習(xí)的機(jī)會都沒有<br />'; $mimang = '把別人用來迷茫的時(shí)間拿到PHP中文網(wǎng)<br />'; $xuexi = '學(xué)習(xí)PHP<br />'; //我們可以把字符串全部拼接起來。 echo $shixi . $buran . $mimang . $xuexi; ?> 因此,剛剛的問題一的代碼我們可以改為: <?php $php = 'PHP中文網(wǎng)'; //中間加了空格喲 $str = $php . 'aaaa'; echo $str; ?>8. 我們將定界符宣告字串視為雙引號一樣的功能來看待。
<?php $weilai = '努力才有未來'; $mimang = '迷茫的原因是沒有目標(biāo)'; $dingjie = <<<ABC 如果 $weilai 非要\t在這"個(gè)滾"犢子 前 '$mimang' 面<br /> 加上\n一段 <i>距離的話</i> 我想說:<h1>思想有多遠(yuǎn),你就跟我滾多遠(yuǎn)</h1> ABC; echo $dingjie; ?>
你可以執(zhí)行發(fā)現(xiàn)$weilai,$mimang,\t\n都可以執(zhí)行,雙引號單引號都能顯示。這就是定界符的特點(diǎn)。
再宣告一次:字串的宣告每一項(xiàng)都必須記住,非常常用。且面試題出現(xiàn)的機(jī)率非常高!
不可見字元:主要是電腦規(guī)定的一些特殊符號。例如:回車(\n)、縮排(\t)等。