2012-12-19 101 views
1

可能重複:
Difference between single quote and double quote string in php解釋字符串類型在PHP

我是一個新手到PHP,我開始有點困惑如何指定字符串。

似乎有成爲4名的方式來指定字符串

  1. 單引號字符串
  2. 雙引號字符串
  3. 定界符
  4. Nowdoc(自PHP 5.3.0)

我想知道爲什麼有這麼多類型的規格以及指定字符串的最佳方式是什麼?

因爲再次在this文章中說單引號和雙引號同樣快,但也有其他人不同意。

爲什麼即使有單引號和雙引號?它是否增加了速度,在某些條件下精度是否更好?

+0

雙引號也會檢查變量,所以我猜它有點慢 –

+1

創建字符串的方式很多的實際原因主要是歷史的。 PHP從各種shell腳本語言以及C,Perl,AWK等其他編程語言中獲得靈感。 –

回答

2

單引號字符串注意比雙引號字符串更少的轉義序列。比較:

echo "one\ntwo"; 
# one 
# two 

有:

echo 'one\ntwo'; 
# one\ntwo 

另一個關鍵的區別是,雙引號字符串插值變量。單引號字符串不會。

至於heredoc和nowdoc,它們只是一種更好的方式來指定長字符串(可能包含引號 - 如果它們這樣做,則不必轉義它們)。爲什麼有兩個?那麼,heredoc是雙引號字符串,因爲nowdoc是單引號字符串。

(所有這些信息,更可in the PHP documentation,順便說一句。)

所以,有很多不同類型的字符串字面的,因爲對於字符串字面很多不同的用途。

2

http://php.net/manual/en/language.types.string.php

  • 單引號字符串基本上是普通的字符串。當腳本編譯
  • 雙引號字符串解析在運行時
  • here文檔是一種方式使用開始一個特殊的序列來定義多行雙引號字符串和它們只解析結束
  • Nowdocs是什麼here文檔的,只是未析像單引號字符串

在性能方面,單引號字符串一通常優選雙引號字符串,因爲它們基本上代表常量。因此,大多數情況下,您會希望使用單引號字符串。

然而,準備輸出

$combined = "An $a and $b plus $c"; 
$combined = 'An '.$a.' and '.$b.' plus '.$c; 

這些線是相等的時候往往不夠,雙引號字符串可以是非常實用的,但你可能已經猜到這是更容易編寫和維護。

您應該記住,儘管這對於PHP來說相當具體,但大多數其他編程語言都支持類似的語法,但它們的處理方式相同。因此,對於那些他們真的只存在用於使字符串內的文字報價更容易(考慮"Someone can't handle an apostrophe, but it's not me."'<p class="some">Text.</p>'),而無需轉義每一個。

0

單引號內的每個字符和變量都是字面對待的(有一個例外是\'的組合,參見下面的「轉義字符」)。下面的代碼不會有打印變量的值的預期結果:

$name = 'Jon'; 
    echo 'Hello, $name'; 

該代碼將逐字打印「Hello,$名稱」。

相反,雙引號內的字符和變量將被解釋。 此代碼將打印「Hello,喬恩」:

$name = 'Jon'; 
echo "Hello, $name"; 

幾乎所有的特殊轉義序列也需要雙引號內使用。由於雙引號字符串的解釋,它們可以說比單引號字符串效率低。但對於大多數應用程序來說,效率差異是無關緊要的。