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

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

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

449377 次浏览

单引号字符串不解释其中的变量。双引号字符串可以。

此外,双引号字符串可以包含不带反斜杠的撇号,而单引号字符串可以包含未转义的引号。

单引号字符串在运行时更快,因为它们不需要解析。

两种封闭字符都是字符串。一种类型的引号可以方便地用于封闭另一种类型的引号。"'"'"'。引号类型之间的最大区别在于,封闭标识符引用会替换双引号内的内容,而不是单引号内的内容。

事情用双引号评估,但不是单引号:

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

在PHP中,'my name'"my name"都是字符串。您可以阅读更多关于它的信息在PHP手册

你应该知道的是

$a = 'name';$b = "my $a"; == 'my name'$c = 'my $a'; != 'my name'

在PHP中,人们使用单引号来定义常量字符串,例如'a''my name''abc xyz',而使用双引号来定义包含标识符的字符串,例如"a $b $c $d"

另一件事是,

echo 'my name';

echo "my name";

echo 'my ' . $a;

echo "my $a";

对于其他使用字符串的情况也是如此。

PHP字符串不仅可以用两个的方式指定,还可以用的方式指定。

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

注释:单引号内的单引号和双引号内的双引号必须转义:

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

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

'单引号

指定字符串的最简单方法是将其包含在单引号中。单引号通常更快,其中引用的所有内容都被视为普通字符串。

示例:

echo 'Start with a simple string';echo 'String\'s apostrophe';echo 'String with a php variable'.$name;

"双引号

在PHP中使用双引号以避免在字符串中使用句点分隔代码(注意:如果您不想使用连接(.)运算符,请使用花括号{}包含变量)。

示例:

echo "Start with a simple string";echo "String's apostrophe";echo "String with a php variable {$name}";

PHP中是否有单引号与双引号的性能优势?

是的。使用单引号稍微快一点。

PHP不会使用额外的处理来解释单引号中的内容。当您使用双引号时,PHP必须解析以检查字符串中是否有任何变量。

有些人可能会说我有点跑题,但无论如何,这是:

你不一定要选择,因为你的字符串的内容:
echo "It's \"game\" time.";echo 'It\'s "game" time.';

如果您熟悉英文引号的使用,以及撇号的正确字符,您可以使用双引号或单引号,因为它不再重要:
echo "It’s “game” time.";echo 'It’s “game” time.';

当然,如果需要,您也可以添加变量。只是不要忘记它们只有在双引号中才会被评估!