在PHP中,字符串的定義可以使用單引號,也可以使用雙引號。但是必須使用同一種單或雙引號來定義字符串,如:‘Hello"和“Hello'為非法的字符串定義。
創(chuàng)新互聯(lián)公司專業(yè)網(wǎng)站建設(shè),網(wǎng)站制作與網(wǎng)站建設(shè)公司,1800元做網(wǎng)站建設(shè)全包,免費(fèi)贈送網(wǎng)站基礎(chǔ)優(yōu)化服務(wù),讓你的網(wǎng)站變得更有價值,公司擁有完善的專業(yè)網(wǎng)站制作公司流程,能夠?yàn)槠髽I(yè)提供建站服務(wù)。使用PHP+MYSQL開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺管理系統(tǒng);網(wǎng)站制作收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).
定義字符串時,只有一種引號被視為定義符,即單引號或雙引號。于是,如果一個字符串由雙引號開始,那么只有雙引號被分析器解析。這樣,就可以在雙引號串中包含任何其他字符,甚至單引號。下面的引號串都是合法的:
$s = "I am a 'single quote string' inside a double quote string";
$s = 'I am a "double quote string" inside a single quote string';
$s = "I am a 'single quote string' inside a double quote string";
$s = 'I am a "double quote string" inside a single quote string';
PHP允許我們在雙引號串中直接包含字串變量,單引號串和雙引號串在PHP中的處理是不相同的。雙引號串中的內(nèi)容可以被解釋而且替換,而單引號串中的內(nèi)容總被認(rèn)為是普通字符。例如如下代碼:
$foo = 2;
echo "foo is $foo"; // 打印結(jié)果: foo is 2
echo 'foo is $foo'; // 打印結(jié)果: foo is $foo
echo "foo is $foo\n"; // 打印結(jié)果: foo is 2 (同時換行)
echo 'foo is $foo\n'; // 打印結(jié)果: foo is $foo\n
$foo = 2;
echo "foo is $foo"; // 打印結(jié)果: foo is 2
echo 'foo is $foo'; // 打印結(jié)果: foo is $foo
echo "foo is $foo\n"; // 打印結(jié)果: foo is 2 (同時換行)
echo 'foo is $foo\n'; // 打印結(jié)果: foo is $foo\n
在單引號串中甚至反斜杠也失去了他的擴(kuò)展含義(除了插入反斜杠\\和插入單引號\')。所以,當(dāng)想在字串中進(jìn)行變量代換和包 含\n(換行符)等轉(zhuǎn)義序列時,應(yīng)該使用雙引號。單引號串可以用在其他任何地方,腳本中使用單引號串處理速度會更快些,因?yàn)镻HP語法分析器對單引號串 的處理方式比較單純,而雙引號的處理由于串內(nèi)部也需要解析,因此更復(fù)雜些,所以處理速度略慢。
php 單引號和雙引號的區(qū)別:
雙引號串中的內(nèi)容可以被解釋而且替換,而單引號串中的內(nèi)容總被認(rèn)為是普通字符。
例如:
$foo = 2; echo "foo is $foo"; // 打印結(jié)果: foo is 2 echo 'foo is $foo'; // 打印結(jié)果: foo is $foo echo "foo is $foo\n"; // 打印結(jié)果: foo is 2 (同時換行) echo 'foo is $foo\n'; // 打印結(jié)果: foo is $foo\n $foo = 2; echo "foo is $foo"; // 打印結(jié)果: foo is 2 echo 'foo is $foo'; // 打印結(jié)果: foo is $foo echo "foo is $foo\n"; // 打印結(jié)果: foo is 2 (同時換行) echo 'foo is $foo\n'; // 打印結(jié)果: foo is $foo\n
在單引號串中甚至反斜杠也失去了他的擴(kuò)展含義(除了插入反斜杠\\和插入單引號\')。所以,當(dāng)你想在字串中進(jìn)行變量代換和包 含\n(換行符)等轉(zhuǎn)義序列時,你應(yīng)該使用雙引號。單引號串可以用在其他任何地方,腳本中使用單引號串處理速度會更快些。
花括號,花括號中既可以輸出簡單變量,也可以輸出復(fù)雜變量,如數(shù)組、對象等;
1.$a = 'abcd';2.$b = array('aaa' = 'abcd', 'bbb' = array(12,34));3.echo "{$a}"; // 輸出 abcd4.echo "{$b['aaa']}"; // 輸出 abcd5.echo "{$b['bbb'][1]}"; // 輸出 34
所以寫的時候想偷懶就用花括號,不會出錯;
但是在性能上,單引號的性能最好,因?yàn)閱我栔械膬?nèi)容會直接被當(dāng)成字符串,沒其他的解析;而解析雙引號的時候,會先判斷雙引號內(nèi)有沒有變量,有變量就把變量用變量值代替,最后再輸出雙引號內(nèi)整個的內(nèi)容;花括號就更不用說了,可以輸出復(fù)雜的變量內(nèi)容。
在某些特定情況下,單引號的效率比雙引號高。
PHP把單引號中的數(shù)據(jù)視為普通字符串,不再處理。
而雙引號還要對其中的字符串進(jìn)行處理,比如遇到$了會把其后的內(nèi)容視為變量等。
在PHP中,字符串的定義可以使用英文單引號'
',也可以使用英文雙引號"
"。
但是必須使用同一種單或雙引號來定義字符串,如:'Hello
World"和"Hello
World'為非法的字符串定義。
單引號和雙引號到底有啥區(qū)別呢?
PHP允許我們在雙引號串中直接包含字串變量。
而單引號串中的內(nèi)容總被認(rèn)為是普通字符,因此單引號中的內(nèi)容不會被轉(zhuǎn)義效率更高。
比如:
復(fù)制代碼
代碼如下:
$str='hello';
echo
"str
is
$str";
//運(yùn)行結(jié)果:
str
is
hello
echo
'str
is
$str';
//運(yùn)行結(jié)果:
str
is
$str
php中,雙引號中的變量($var)和特殊字符(\r\n之類)會被轉(zhuǎn)義,單引號中的內(nèi)容不會被轉(zhuǎn)義(所以效率更高)。
使用上的話,
我以前很喜歡在sql字符串里這樣寫$sql
=
"SELECT
*
FROM
table
WHERE
id
=
$id",這樣里面的$id可以被轉(zhuǎn)義,單引號就不行。
在JavaScript中
單引號
和雙引號沒有區(qū)別,只要成對使用就行。
我在JavaScript
中使用單引號大多是因?yàn)?/p>
Javascript
和
HTML
打交道比較多,輸出
HTML
片段的時候不需要轉(zhuǎn)義
HTML
中屬性的引號。
總之,看實(shí)際情況來用啦,怎么方便怎么使用。
以上就是本文關(guān)于php中單雙引號的區(qū)別分析了,希望大家能夠喜歡