PHP 中單引號和雙引號字串有什麼不同?
P粉773659687
P粉773659687 2023-08-23 20:46:33
0
2
830
<p>我有點困惑為什麼我在 PHP 中看到一些程式碼,其中的字串放在單引號中,有時放在雙引號中。 </p> <p>我只知道在.NET,或者C語言中,如果它是在單引號中,那就意味著它是一個字符,而不是一個字串。 </p>
P粉773659687
P粉773659687

全部回覆(2)
P粉458725040

事物在雙引號中計算,但不在單引號中計算:

$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粉323374878

可以指定

PHP 字串不只是兩種方式,而是四種方式。

  1. 單一帶引號的字串將幾乎完全「原樣」顯示內容。變數和大多數轉義序列將不會被解釋。例外的是,要顯示文字單引號,您可以使用反斜線\' 對其進行轉義,而要顯示反斜線,您可以使用另一個反斜線\\ code> (所以是的,即使是單引號字串也會被解析)。
  2. 雙引號字串將顯示大量轉義序列(包括一些正規表示式),並將評估字串中的變數。這裡重要的一點是您可以使用大括號來隔離要評估的變數的名稱。例如,假設您有變數 $type 並且您想要回顯「The $types are」。這將會尋找變數$types。若要解決此問題,請使用 echo "The {$type} are"。看看字串解析 了解如何使用陣列變數等。
  3. Heredoc 字串語法的工作方式類似於雙引號字串。它以 開頭。在該運算符之後,提供一個標識符,然後提供一個換行符。接下來是字串本身,然後再次使用相同的標識符來結束引用。您不需要在此語法中轉義引號。
  4. Nowdoc (自 PHP 5.3.0 起)字串語法的工作原理本質上類似於單引號字串。不同之處在於,甚至不需要轉義單引號或反斜線。 nowdoc 使用與此處文件相同的 序列進行標識,但後面的標識符用單引號括起來,例如nowdoc 中不進行解析。

註解: 單引號內的單引號和雙引號內的雙引號必須轉義:

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

速度:
沒有差別
請閱讀可信文章一位 PHP 核心開發人員談到了這個問題。說到測試,我們永遠不應該認為它們是理所當然的。必須明白,編寫可信的測試,特別是解釋其結果需要大量的知識和經驗。這意味著大多數測試都是假的。例如,在這樣的程式碼中

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

帶引號的字串與整個腳本一起僅被解析一次,然後被轉換為操作碼。然後它被執行一百萬次。所以它測量除了解析之外的任何東西。這只是冰山一角。對於這樣的奈米基準,幾乎不可能創建一個不會被某些幹擾性副作用破壞的可靠測試。

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