技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類(lèi)目錄

贊助商

最新文章

搜索

實(shí)例分析php單引號(hào)和雙引號(hào)的區(qū)別

作者:admin    時(shí)間:2012-9-27 23:47:4    瀏覽:

使用php有一段時(shí)間了,在單引號(hào)和雙引號(hào)的使用上,一直沒(méi)有太過(guò)在意,感覺(jué)使用哪個(gè)都一樣,沒(méi)有發(fā)現(xiàn)有什么區(qū)別。例如:

$name = '卡卡測(cè)速網(wǎng)';
$name = "卡卡測(cè)速網(wǎng)";

這兩種寫(xiě)法的意思是完全一樣的。大多數(shù)情況下,我們大家都是定義變量時(shí)使用單引號(hào)或雙引號(hào),就如上述的例子一樣,不會(huì)覺(jué)察到它們之間有什么不同,所以比較容易忽視單引號(hào)和雙引號(hào)它們?cè)谀承﹫?chǎng)合的區(qū)別。

今天我寫(xiě)了個(gè)php程序,但是無(wú)論如何都測(cè)試不成功,但我真的確信程序沒(méi)有問(wèn)題,因?yàn)橹皇呛芎?jiǎn)單的兩三行的代碼。如下所示:

<?php
$query = "http://howtostagehomes.com/s.asp?q=http$bj$3.15"; //這里用的是雙引號(hào)
file_get_contents($query);
?>

上述代碼,本意是給s.asp傳一個(gè)q的參數(shù),參數(shù)值為“http$bj$3.15”。這貌似很簡(jiǎn)單的問(wèn)題,卻把我折騰的哭笑不得。因?yàn)槲以趕.asp接收到的q參數(shù)值并不是“http$bj$3.15”,而是“http$3.15”。我非常郁悶,“$bj”幾個(gè)字符怎么丟失了?我百思不得其解。

在經(jīng)歷了好多測(cè)試后,最后在把上述程序的雙引號(hào)改為單引號(hào)之后,總是傳參正常了。

從失敗中吸取經(jīng)驗(yàn),通過(guò)這次事件,讓我不得不意識(shí)到在php程序里單雙引號(hào)的不同。最后又經(jīng)過(guò)多個(gè)實(shí)例的測(cè)試,得出如下結(jié)論:

雙引號(hào)里的語(yǔ)句是經(jīng)過(guò)解析后輸出,單引號(hào)里的語(yǔ)句是直接輸出。

例一:

$a = "b";
$name1 = '$a';
$name2 = "$a";

結(jié)果:
echo $name1 輸出 $a;echo $name2 輸出為b,因?yàn)殡p引號(hào)里的$a會(huì)被先解析,$a會(huì)被視作一個(gè)變量,而這個(gè)變量的值為b。

php會(huì)把“$”及其后的字母或數(shù)字當(dāng)作一個(gè)變量,雙引號(hào)內(nèi)僅僅是第一個(gè)“$”被視作變量

例二:

$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會(huì)把“$”及其后的字母或數(shù)字當(dāng)作一個(gè)變量,且雙引號(hào)內(nèi)僅僅是第一個(gè)“$”被視作變量。

標(biāo)簽: 腳本  
x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */