一尘不染

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

php

我有些困惑,为什么我在PHP中看到一些代码,这些代码的字符串用单引号引起来,有时用双引号引起来。

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


阅读 425

收藏
2020-05-26

共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不进行任何解析。

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

2020-05-26