在PHP裡定義一個字串的值有多種方式,其中有不少技巧,特搜集整理在這裡備用。
1、最普通的格式,用雙引號或單引號引用起來的字元,比如
$str="我是雙引號包起來的字串"; 或 $str='我是單引號包起來的字串';
要問二者有什麼區別,在於雙引號包起來的字串可以不需要串連符而直接插入變數,而單引號不會對字串內的變數格式做處理,所以如果要定義拼接變數的字串,用單引號會更快一些。
值得注意的是,經過手動測試,如果定義純粹字串,不拼接不包含變數的話,用雙引號倒是效率高那麼一點點。
2、雙引號包起來的字串內可以直接插入變數,比如直接在要插入變數的位置寫入變數名或者用大括弧把變數名包起來,
$str1="第一個字串變數的內容是:$str,就這麼多。";輸出的時候$str會被替換成對應變數的值。
補充:如果用“文字{$str}文字”的方式內嵌變數名,則變數名是你所預期指定的,而如果用“文字$str文字”來內嵌變數名,此時變數會被處理成“$str文字”,而不是你所預期的“$str”。之所以如此,是因為沒有明確用大括弧指明變數的時候,PHP自動處理變數名的時候,是採用的單詞分詞字元作為界限的,這裡一定要注意。分詞字元一般是空格標點符號等。
3、如果不使用直接插入變數的方法定義字串,可以用點號串連多個字串,比如
$str1='第一個字串變數的內容是:' . $str . ',就這麼多。';
4、如果遇到需要多行書寫的字串怎麼辦,比如我們要定義一段JS指令碼,當然如果把指令碼寫在一行裡是沒問題的,但是如果指令碼比較長一些,而且其中會出現很多轉義符號的話,指令碼最終成型的話,很有可能成了一鍋黏粥了。不但格式上不好閱讀,而且一旦出問題要修改的話,也會很羅嗦。那麼有沒有辦法可以把字串直接定義成多行,並且引號之類的需要轉義的字元可以直接輸出呢?答案是肯定的,PHP早就預料到這種需求了。我們可以這麼定義一段多行字串:
$str=<<<STR
'ok',"hello"
I will
{$str1}
STR;
其中三個小於符號代表多行字串的輸入,STR是字串界定符,界定符的名字可以自己定義,兩個界定符之間的內容就是多行字串。其中的單引號雙引號可以直接輸出而不必轉義,當然裡面也可以直接插入變數,輸出是會自動替換變數值的。
5、外加一個小技巧,當使用 echo進行字串輸出時,如果字串使用拼接方式組成,可以使用逗號來串連需要拼接的各部分字串和變數,比如
echo 'first',"second",$str,"end";
據說這樣輸出速度要快一些,原因在於echo可以接受多個參數,並直接按順序輸出,實際上逗號不是拼接字串,而是把不同字串和變數作為參數傳送給echo命令。