搜尋

首頁  >  問答  >  主體

PHP 中單引號和雙引號字串有什麼不同?

<p>我有點困惑為什麼我在 PHP 中看到一些程式碼,其中的字串放在單引號中,有時放在雙引號中。 </p> <p>我只知道在.NET,或者C語言中,如果它是在單引號中,那就意味著它是一個字符,而不是一個字串。 </p>
P粉773659687P粉773659687448 天前794

全部回覆(2)我來回復

  • P粉458725040

    P粉4587250402023-08-24 13:14:41

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

    $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.

    回覆
    0
  • P粉323374878

    P粉3233748782023-08-24 10:55:52

    可以指定

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

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

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

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

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

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

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

    回覆
    0
  • 取消回覆