Was ist in PHP der Unterschied zwischen Zeichenfolgen in einfachen und doppelten Anführungszeichen?
P粉604507867
P粉604507867 2023-08-18 11:45:01
0
2
692
<p>Ich bin ein wenig verwirrt, warum in PHP einige Zeichenfolgen im Code einfache Anführungszeichen und andere doppelte Anführungszeichen verwenden. </p> <p>Ich weiß nur, dass in .NET oder C die Verwendung von einfachen Anführungszeichen bedeutet, dass es sich um ein Zeichen und nicht um eine Zeichenfolge handelt. </p>
P粉604507867
P粉604507867

Antworte allen(2)
P粉311089279

双引号中的内容会被解析,而单引号中的内容不会被解析:

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

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

引号字符串只被解析一次,与整个脚本一起,然后被转换为操作码。然后执行一百万次。因此,它测量的不是解析。这只是冰山一角。对于像这样的纳米基准测试,几乎不可能创建一个不会被某些干扰副作用破坏的可信测试。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage