suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Was ist der Unterschied zwischen Zeichenfolgen in einfachen und doppelten Anführungszeichen in PHP?

<p>Ich bin etwas verwirrt darüber, warum ich Code in PHP sehe, in dem Zeichenfolgen in einfache Anführungszeichen und manchmal in doppelte Anführungszeichen gesetzt werden. </p> <p>Ich weiß nur, dass es sich in .NET oder C, wenn es in einfachen Anführungszeichen steht, um ein Zeichen und nicht um eine Zeichenfolge handelt. </p>
P粉773659687P粉773659687460 Tage vor807

Antworte allen(2)Ich werde antworten

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

    Antwort
    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'nowdoc 中不进行解析。

    注释: 单引号内的单引号和双引号内的双引号必须转义:

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

    速度:
    没有区别
    请阅读可信文章一位 PHP 核心开发人员谈到了这个问题。说到测试,我们永远不应该认为它们是理所当然的。必须明白,编写可信的测试,特别是解释其结果需要大量的知识和经验。这意味着大多数测试都是假的。例如,在这样的代码中

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

    带引号的字符串与整个脚本一起仅被解析一次,然后被转换为操作码。然后它被执行一百万次。所以它测量除了解析之外的任何东西。这只是冰山一角。对于这样的纳米基准,几乎不可能创建一个不会被某些干扰性副作用破坏的可靠测试。

    Antwort
    0
  • StornierenAntwort