在PHP中,單引號和雙引號字串有什麼不同?
P粉604507867
P粉604507867 2023-08-18 11:45:01
0
2
718
<p>我有點困惑,為什麼在PHP中有些程式碼中的字串使用單引號,有些則使用雙引號。 </p> <p>我只知道在.NET或C語言中,如果使用單引號,那意味著它是一個字符,而不是一個字串。 </p>
P粉604507867
P粉604507867

全部回覆(2)
P粉311089279

雙引號中的內容會被解析,而單引號中的內容不會被解析:

$s = "dollars";
echo 'This costs a lot of $s.'; // This costs a lot of $s.
echo "This costs a lot of $s."; // This costs a lot of dollars.
P粉741678385

PHP字串不僅可以用兩種方式指定,還可以用四種方式。

  1. 單引號字串幾乎完全如實顯示。變數和大多數轉義序列不會被解釋。例外情況是,要顯示一個單引號,可以用反斜線\'進行轉義,要顯示一個反斜杠,可以用另一個反斜杠\\進行轉義(所以,是的,即使是單引號字串也會被解析)。
  2. 雙引號字串將顯示一系列轉義序列(包括一些正規表示式),並且字串中的變數將被求值。一個重要的點是你可以使用花括號來隔離要求值的變數的名稱。例如,假設你有一個變數$type,你想要echo "The $types are"。這將會尋找變數$types。要解決這個問題,使用echo "The {$type}s are"。查看字串解析以了解如何使用陣列變數等。
  3. Heredoc字串語法與雙引號字串類似。它以<<<開始。在這個運算符之後,提供一個標識符,然後是一個換行符。然後是字串本身,然後再次使用相同的標識符來關閉引用。在這種語法中,你不需要轉義引號。
  4. Nowdoc(自PHP 5.3.0起)字串語法基本上與單引號字串相同。不同之處在於,甚至不需要轉義單引號或反斜線。 Nowdoc使用與heredoc相同的<<<序列來標識,但後面的標識符用單引號括起來,例如<<<'EOT'Nowdoc中不進行解析。

注意: 單引號內的單引號和雙引號內的雙引號必須進行轉義:

$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";

速度:
沒有區別
請閱讀一篇來自PHP核心開發者的可信任文章。說到測試,我們永遠不應該將其視為理所當然。必須理解編寫可信測試以及解釋其結果需要很多知識和經驗。這意味著大多數測試都是虛假的。例如,在像這樣的程式碼中

for($i=0;$i<100000;$i++) {
    'string';
}

引號字串只被解析一次,與整個腳本一起,然後轉換為操作碼。然後執行一百萬次。因此,它測量的不是解析。這只是冰山一角。對於像這樣的奈米基準測試,幾乎不可能創建一個不會被某些幹擾副作用破壞的可信測試。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板