單引號和雙引號大體相同,但有一點非常重要,,就是變數引用問題 ,你把下面代碼運行即可明白了
代碼如下 |
複製代碼 |
<?php $x="中國"; echo "我是$x人";//雙引號 echo "<br />"; echo '我是$x人';//單引號 ?> |
變數用雙引號括起來,單引號中的則不是(即單引號中的變數符號不解析)
單引號內部的變數不會執行
雙引號會執行
如
代碼如下 |
複製代碼 |
$name = 'hello'; echo "the $name"; |
會輸出 the hello
而如果是單引號
代碼如下 |
複製代碼 |
$name = 'hello'; echo 'the $name'; |
會輸出 the $name
主要區別就是這個。
在字串中引用複雜的變數組合時,可能會產生一些問題,下面的代碼會正常工作:
代碼如下 |
複製代碼 |
echo "value = $foo"; echo "value = $a[$i]"; |
而下面的代碼卻不能得到我們希望的結果:
echo "value = $a[$i][$j]"; //我們希望列印二維數組$a的某個元素。
為避免這些字串使用中的潛在問題,我們通常把複雜的變數從字串中分離開來,就像這樣:
代碼如下 |
複製代碼 |
echo 'value = ' . $a[$i][$j]; |
還有一種辦法是將複雜變數用花括弧括起來,文法分析器就能正確辨認了:
代碼如下 |
複製代碼 |
echo "value = {$a[$i][$j]}" //列印二維數組$a的某個元素 |
這樣,又出現新問題了。當我們想在字串中引用花括弧字元本身時,就要記得使用轉義符了:
代碼如下 |
複製代碼 |
$var = 3; echo "value = {$var}"; // 列印結果 "value = 3" echo "value = {$var}"; // 列印結果 "value = {3}" |
看個執行個體
代碼如下 |
複製代碼 |
$var1 = "chris mao"; //assign the value "chirs mao" to $var1 $var2 = &$var1; //reference $var1 via $var2 echo '<b>the value of $var2 is: </b>', $var2, "<br>"; //$var2 and $var1 have the same value "chris mao" $var2 = 'my name is $var2'; //modify $var2, the sametime $var1 was modified echo '<b>the value of $var1 is: </b>', $var1, "<br>"; //the value of $var1 is "my name is $var2" $var2 = "my new name is $var1"; //modify $var2, the sametime $var1 was modified echo '<b>the value of $var2 is: </b>', $var2, "<br>"; //the value of $var1 is "my new name is my name is $var2" echo '<b>the value of $var1 is: </b>', $var1, "<br>"; //the value of $var1 is "my new name is my name is $var2" |