字串就是所有我們可見和不可見的字符,就是我們日常當中說的話,就是我想說:「小明好帥」或「鳳姐,我愛你!」。字串,就是我想表達的一切讓人看到的字元。
例如可以看到的字元:
我願變成童話你,你愛的那個王子,有房有車有票子。 <html><title></title></html> ^@@@#@ my name is xiaoshenyang
以上可見的文字,HTML標籤、特殊字元和英文等等,我們都認為是字串。
註:不可見字符暫時不講解,因為,文本中無法表現,下面的實驗中逐漸注意即可。為了有更清晰的表現,也可以觀看本書配套的PHP學院出品關於字串的影片。
在PHP語言中宣告字串有三種方式:
1.用單引號宣告
2.用雙引號宣告
3.使用字界符宣告(需要輸入非常大段的字串時使用)
1.單引號宣告
用英文半腳的單引號,將字串包起來
<?php //声明字符串变量$zhifu $zhifu = '曾经有操蛋的爱情摆在我面前,我珍惜了。当我得到的时候才感到后悔莫及。如果非要在这段爱情前面加上一段三个字,我愿意说三个字:滚犊子'; //你可以放XAMPP指定的目录下,新建一个文件叫str.php。然后访问一下http://127.0.0.1/str.php试试。会不会显示这句话。 echo $zhifu; ?>
2.雙引號宣告字串
在字串兩邊加雙引號。
<?php //声明字符串变量$str $str = "如果非要在滚犊子前面加上一个时间的话我愿意是马上。"; echo $str; ?>
3.字界符宣告
1).變數後面的等號寫三個小於號(<<<) 。
2).然後在<<<後面寫上字元(建議英文大寫字元)。如下例中的:ABC
3).然後換行寫上任意想寫的字元
4).寫完後,頂行。在行最開始處,再寫上<<<後面的字元和分號。如下例中的:ABC;
<?php $dingjie = <<<ABC 如果 非要在这个滚犊子 前 面<br /> 加上一段 <i>距离的话</i> 我想说:<h1>思想有多远,你就跟我滚多远</h1> ABC; ?>
那雙引號和單引號有什麼差別呢?
【重要知識點】PHP面試題中,高機率面試題(建議背誦並實驗三次以上)
1.雙引號解析變量,但是單引號不解析變數。
2.在雙引號裡面插入變量,變量後面如果有英文或中文字符,它會把這個字符和變量拼接起來,視為一整個變量。一定要在變 量後面接有特殊字符,例如空格等分開。
3.如果在雙引號裡面插變數的時候,後面不想有空格,可以拿大括號將變數包起來。
4.雙引號解析轉義字符,單引號不解析轉義字符。但,單引號能解析\' 和\
5.單引號效率高於雙引號,盡可能使用單引號
6.雙號和單引號可以互插! ! !雙引號當中插入單引號,單引號當中插入變量,這個變數會被解析。
7.神奇的字串拼接膠水-(.)點,用來拼接字串。
8.我們將定界符宣告字串視為雙引號一樣的功能來看待。
實驗範例
1.雙引號解析變量,但是單引號不解析變數
<?php //声明变量$shouji $shouji = '为了苹果手机去卖肾'; //在双引号中放$shouji 然后echo 一下是什么效果呢? $str = "$shouji 会不会显示呢?"; //输入$str试试 echo $str; ?>
在瀏覽器中打開,運行的結果如下:
透過上邊的例子,我們發現。雙引號中間的變數夠執行顯示,我們將$str這個字串兩邊的雙引號,改為單引號試試,再看一次執行結果:
發現$shouji 直接顯示出來了,而不是雙引號的顯示結果。
透過上例,我們證明了:雙引號執行變量,而單引號不執行變數。我們得到一個重要結論:
雙引號需要解析變量,因此雙引號的效率沒有單引號高。我們如果為了更高的效率,我們通常會使用單引號。
2. 在雙引號裡面插入變量,變數後面如果有英文或中文字符,它會把這個字符和變數拼接起來,視為一整個變數。可以在後面接上特殊字符,例如空格等分開。
<?php $php = 'php中文网'; $str = "$phpaaaa"; //你会发现输出$str,什么都没有在页面中显示 echo $str; ?>
但是,我們在$str 宣告的這個字串中將$huaqiangu 後面接個空格再接aaaa,程式碼如下:
<?php $php = 'php中文网'; //中间加了空格哟 $str = "$php aaaa"; echo $str; ?>
大家發現執行顯示的結果不再是空白頁面,而是這個頁面有內容了。如下:
我們把程式碼再改改:
<?php $php = 'php中文网'; //中间加了空格哟 $str = "$php!aaaa"; echo $str; ?>
大家開啟一次頁面,執行了一次程式碼看看結果是不是變成了:
php中文網!aaaa
因此,證明了我們的第二項觀點。
3. 如果在雙引號裡面插變數的時候,後面不想有空格,可以拿大括號將變數包起來。
那,如果我不想在後面有空格有,有特殊符號,就想直接顯示變數$huaqiangu呢? ——我們的解決方法是用大括號把變數包起來。程式碼如下:
<?php $php = 'php中文网'; //中间加了空格哟 $str = "{$php}aaaa"; echo $str; ?>
於是,大家會發現花千骨後面沒有了特殊符號,也沒有空格了,達到了我們想要的顯示結果,示範效果如下:
4. 雙引號解析轉義字符,單引號不解析轉義字符。但,單引號能解析\' 和\
第4個字串的注意事項比較難以觀察,轉義字元有一些,但最常用的有:
\n 回車
\t 縮排
我們來透過實驗先來理解\n和\t是什麼。
<?php //声明一个字符串,记住是双引号 $string = "每天来PHP中文网\n给梦想\t一个机会"; echo $string; ?>
做這一塊的實驗中有一個注意事項,顯示網頁是看不出來效果的,如下:
$string = "每天來PHP中文網\n給夢想\t一個機會";
\n在PHP學院的後面,在原始碼裡顯示的結果是跟按了回車鍵一樣的效果。\t在給夢想和一個機會中間。顯示的結果是有幾個空格的效果。 \t相當於我們在電腦上按了一個tab鍵效果。
<?php //声明一个字符串,记住是双引号 $string = '每天来PHP中文网\n给梦想\t一个机会'; echo $string; ?>
執行一次看看效果:
你會發現-單引號中間的\t和\n直接顯示出來了,而沒有變成按一次回車鍵和按一次tab鍵後的效果。因此:
雙引號執行轉義字元而單引號不執行轉義字元。
5. 轉義字元\(反斜線的使用)
如果我們宣告一個變數$beizi ,我們想要在$beizi聲明的雙引號中間加上一個雙引號顯示輸出怎麼辦?<?php //要在$beizi的字符串中显示一个双引号怎么办? $beizi = "多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧"; echo $beizi; ?>如果真如上述所寫程式碼,程式碼會報錯。錯誤結果如下:因為字串:「多於絕大多數的人出生就是杯具,但是」我們在不斷的讓人生變成喜劇」必須寫在雙引號中間。而雙引號中間還有一個雙引號。一個杯具!可以了。
<?php //要在$beizi的字符串中显示一个双引号怎么办? $beizi = "多于绝大多数的人出生就是杯具,但是\"我们在不断的让人生变为喜剧"; echo $beizi; ?>
你可以再執行一下上面的程式碼,發現不再報錯了。同理可推,單引號當中要插入一個單引號顯示出來的時候,也可以在單引號聲明的字符串中的單引號前面加上(反斜線,轉義字符),將單引號的意義(限定字元區間)去掉。
<?php //要在$beizi的字符串中显示一个双引号怎么办? $shengyang = 'i\'m xiaoshengyang'; echo $shengyang; ?>
6. 雙號和單引號可以互插! ! !雙引號當中插入單引號,單引號當中插入變量,這個變數會被解析。
程式碼如下:
<?php $legend = '猛虎'; $NoAlike = "心有'$legend',细嗅蔷薇"; echo $NoAlike; ?>
執行結果如下:
## 7. 神奇的字串拼接膠水-(.)點,用來拼接字串。
<?php $php = 'PHP中文网'; //中间加了空格哟 $str = "{$php}aaaa"; echo $str; ?>上面這段程式碼是,我們曾經說過雙引號能夠解析變量,有一個問題:
效率沒有純單引號的高
那麼問題1:我想改為效率最高的方式該怎麼辦? 問題2:我有多個字串,要拼接在一聲怎麼辦? 那,我們需要使用到神奇的膠水:(.)點,用來拼接字串。<?php $shixi = '大学4年要好好学习<br />'; $buran = '不然连实习的机会都没有<br />'; $mimang = '把别人用来迷茫的时间拿到PHP中文网<br />'; $xuexi = '学习PHP<br />'; //我们可以把字符串全部拼接起来。 echo $shixi . $buran . $mimang . $xuexi; ?> 因此,刚刚的问题一的代码我们可以改为: <?php $php = 'PHP中文网'; //中间加了空格哟 $str = $php . 'aaaa'; echo $str; ?>8. 我們將定界符宣告字串視為雙引號一樣的功能來看待。
<?php $weilai = '努力才有未来'; $mimang = '迷茫的原因是没有目标'; $dingjie = <<<ABC 如果 $weilai 非要\t在这"个滚"犊子 前 '$mimang' 面<br /> 加上\n一段 <i>距离的话</i> 我想说:<h1>思想有多远,你就跟我滚多远</h1> ABC; echo $dingjie; ?>
你可以執行發現$weilai,$mimang,\t\n都可以執行,雙引號單引號都能顯示。這就是定界符的特點。
再宣告一次:字串的宣告每一項都必須記住,非常常用。且面試題出現的機率非常高!