小编典典

PHP中单引号和双引号字符串有什么区别?

all

我有点困惑,为什么我在 PHP 中看到一些代码,其中字符串放在单引号中,有时放在双引号中。

我只知道在 .NET 或 C 语言中,如果它在单引号中,这意味着它是一个字符,而不是一个字符串。


阅读 111

收藏
2022-03-01

共1个答案

小编典典

PHP 字符串 不仅可以通过 两种
方式指定, 还可以通过四种 方式指定。

  1. 单引号字符串 将几乎完全“按原样”显示内容。不会解释变量和大多数转义序列。例外情况是,要显示文字单引号,您可以使用反斜杠对其进行转义\',而要显示反斜杠,您可以使用另一个反斜杠对其进行转义\\所以是的,即使是单引号字符串也会被解析 )。
  2. 双引号字符串 将显示大量转义字符(包括一些正则表达式),并且将评估字符串中的变量。这里重要的一点是, 您可以使用花括号来隔离要评估的变量的名称 。例如,假设您有变量$type并且想要echo "The $types are". 这将寻找变量$types。为了避免这种使用echo "The {$type}s are",您可以将左大括号放在美元符号之前或之后。查看字符串解析以了解如何使用数组变量等。
  3. Heredoc 字符串语法类似于双引号字符串。它以<<<. 在此运算符之后,提供一个标识符,然后是一个换行符。字符串本身紧随其后,然后再次使用相同的标识符来关闭引号。您不需要在此语法中转义引号。
  4. Nowdoc (自 PHP 5.3.0 起)字符串语法本质上与单引号字符串类似。不同之处在于,甚至不必转义单引号或反斜杠。nowdoc 使用与 heredocs 相同的<<<序列来标识,但后面的标识符用单引号括起来,例如<<<'EOT'. nowdoc 中不进行任何解析。

注意: 单引号内的单引号和双引号内的双引号必须进行转义:

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

速度:
我不会过分强调单引号比双引号快。在某些情况下,它们可能更快。这是一篇文章,解释了自 PHP 4.3
以来单引号和双引号基本上同样快的一种方式
Useless Optimizations朝向底部,部分C)。此外,这个
基准页面
有一个单引号和双引号比较。大多数比较是相同的。有一个比较,双引号比单引号慢。

2022-03-01