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

2022-08-30 05:45:55

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

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


答案 1

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

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

笔记:单引号内的单引号和双引号内的双引号必须转义:

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

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


答案 2

事物在双引号中评估,但不以单引号计算:

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

推荐