|
|
|
|
|
使用php有一段時間了,在單引號和雙引號的使用上,一直沒有太過在意,感覺使用哪個都一樣,沒有發(fā)現(xiàn)有什么區(qū)別。例如:
$name = '卡卡測速網(wǎng)';
$name = "卡卡測速網(wǎng)";
這兩種寫法的意思是完全一樣的。大多數(shù)情況下,我們大家都是定義變量時使用單引號或雙引號,就如上述的例子一樣,不會覺察到它們之間有什么不同,所以比較容易忽視單引號和雙引號它們在某些場合的區(qū)別。
今天我寫了個php程序,但是無論如何都測試不成功,但我真的確信程序沒有問題,因為只是很簡單的兩三行的代碼。如下所示:
<?php
$query = "http://gazebo2go.com/s.asp?q=http$bj$3.15"; //這里用的是雙引號
file_get_contents($query);
?>
上述代碼,本意是給s.asp傳一個q的參數(shù),參數(shù)值為“http$bj$3.15”。這貌似很簡單的問題,卻把我折騰的哭笑不得。因為我在s.asp接收到的q參數(shù)值并不是“http$bj$3.15”,而是“http$3.15”。我非常郁悶,“$bj”幾個字符怎么丟失了?我百思不得其解。
在經(jīng)歷了好多測試后,最后在把上述程序的雙引號改為單引號之后,總是傳參正常了。
從失敗中吸取經(jīng)驗,通過這次事件,讓我不得不意識到在php程序里單雙引號的不同。最后又經(jīng)過多個實例的測試,得出如下結(jié)論:
雙引號里的語句是經(jīng)過解析后輸出,單引號里的語句是直接輸出。
例一:
$a = "b";
$name1 = '$a';
$name2 = "$a";
結(jié)果:
echo $name1 輸出 $a;echo $name2 輸出為b,因為雙引號里的$a會被先解析,$a會被視作一個變量,而這個變量的值為b。
php會把“$”及其后的字母或數(shù)字當(dāng)作一個變量,雙引號內(nèi)僅僅是第一個“$”被視作變量
例二:
$name1 = "$c.1";
$name2 = "$c1.1";
$name3 = "$c#1";
$name4 = "$c$1";
結(jié)果:
echo $name1輸出“.1”,echo $name2輸出“.1”,echo $name3輸出“#1”,echo $name4輸出“$1”。從這可以看出php會把“$”及其后的字母或數(shù)字當(dāng)作一個變量,且雙引號內(nèi)僅僅是第一個“$”被視作變量。