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

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

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

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

  1. 单引号字符串将几乎完全按原样显示。变量和大多数转义序列将不会被解释。例外情况是,要显示文字单引号,可以使用反斜杠\'对其进行转义,要显示反斜杠,可以使用另一个反斜杠\\对其进行转义(是的,即使是单引号字符串也会被解析)
  2. 双引号字符串将显示大量转义字符(包括一些正则表达式),并对字符串中的变量进行求值。这里有一点很重要,您可以使用大括号分隔要计算的变量名。例如,假设您有变量$type,并且希望回显“$types”。这将查找变量$types。要避免这种情况,请使用echo“{$type}是”您可以将左大括号放在美元符号之前或之后。看看字符串解析,看看如何使用数组变量等
  3. herdoc字符串语法与双引号字符串类似。它以开头&lt&lt&lt。在这个操作符之后,提供一个标识符,然后是一个换行符。随后是字符串本身,然后是相同的标识符以结束引号。在这种语法中不需要转义引号
  4. Nowdoc(自PHP 5.3.0以来)字符串语法的工作原理基本上与单引号字符串类似。不同之处在于,即使是单引号或反斜杠也不必转义。nowdoc使用相同的&lt&lt&lt用于遗传密码的序列,但后面的标识符用单引号括起来,例如&lt&lt<'EOT'在nowdoc中不进行任何分析。

注意事项:
必须转义单引号内的单引号和双引号内的双引号:

他说:“怎么了?”;
$string=“他说”怎么了?”;

速度:
我不会过分强调单引号比双引号快。在某些情况下,它们可能更快。这里有一篇文章解释了自PHP4.3以来单引号和双引号基本上同样快的一种方式(无用的优化,在底部,C)。此外,此基准页面有单引号与双引号的比较。大多数比较都是相同的。有一种比较是双引号比单引号慢

发表评论