搜尋

首頁  >  問答  >  主體

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

<p>我有點困惑,為什麼在PHP中有些程式碼中的字串使用單引號,有些則使用雙引號。 </p> <p>我只知道在.NET或C語言中,如果使用單引號,那意味著它是一個字符,而不是一個字串。 </p>
P粉604507867P粉604507867465 天前675

全部回覆(2)我來回復

  • P粉311089279

    P粉3110892792023-08-19 10:28:34

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

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

    P粉7416783852023-08-19 00:19:38

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

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

    回覆
    0
  • 取消回覆