PHP 中單引號和雙引號字串有什麼不同?
P粉773659687
P粉773659687 2023-08-23 20:46:33
0
2
608

我有點困惑為什麼我在 PHP 中看到一些程式碼,其中的字串放在單引號中,有時放在雙引號中。

我只知道在.NET,或者C語言中,如果它是在單引號中,那就意味著它是一個字符,而不是一個字串。

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'; }

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

      最新下載
      更多>
      網站特效
      網站源碼
      網站素材
      前端模板
      關於我們 免責聲明 Sitemap
      PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!