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

30

可能是重复问题:
PHP:不同的引号?

简单问题:

在 PHP 中,' 和 " 有什么区别?我应该在什么时候使用它们?


7
好的,我会尽力进行翻译。以下是需要翻译的内容:Dupe: https://dev59.com/WknSa4cB1Zd3GeqPKQRd重复问题:https://dev59.com/WknSa4cB1Zd3GeqPKQRd - strager
请在发布新问题之前先搜索stackoverflow(搜索框位于右上角)。 - ChristopheD
我确实做了,但显然不够好。谢谢。 - johnnietheblack
2
随着存储库大小的增加,实际上找到某些东西会变得更加困难。迄今为止我见过的最糟糕的例子是Mozilla的Bug跟踪器。在一些话题上,Stack Overflow也存在类似问题,您可能无法确定所使用的术语,甚至更不确定用于查找它的搜索术语。 - Joey
@Johannes Rössel,有时候谷歌搜索对我很有帮助。=] - strager
6个回答

25

基本上,单引号字符串是纯文本,几乎没有特别的用法,而双引号字符串可以进行变量插值(例如,echo "Hello $username";)以及转义序列,如“\n”(换行符)。

您可以在PHP手册中了解更多有关字符串的知识。


23

在PHP <= 5.2中,有3种语法用于声明字符串

使用单引号:

变量和特殊字符的转义序列将不会被展开。

例如:

echo 'Variables do not $expand $either';

将输出:

Variables do not $expand $either


使用双引号:

双引号字符串最重要的特点是变量名会被扩展。

例如:

$a = 10;
echo "a is $a";

将输出:
a is 10


使用heredoc:

Heredoc文本的行为就像一个没有双引号的双引号字符串。这意味着heredoc中的引号不需要转义。

例如:

$a = 10;
$b = 'hello';

$str = <<<END_STR
a is $a
and "b" is $b.
END_STR;

echo $str;

会得到:

将为您获取:

a is 10
and "b" is hello.

5

在“引号”包含的字符串中,任何变量都将被解析。在‘引号’包含的字符串中,任何变量都不会被解析,并且将按字面意义显示为变量名。因此,对于PHP处理来说,‘引号’包含的字符串略微更快。

$test = 'hello';
echo "this is a $test"; // returns this is a hello
echo 'this is a $test'; // returns this is a $test

我建议在字符串中使用单引号,除非你想在字符串中嵌入变量。


1

区别在于,双引号(")之间的字符串会被解析以进行变量和转义序列替换。单引号(')之间的字符串则不会。

因此,使用双引号(")可以这样做:

$count = 3;
echo "The count is:\t$count";

这将产生

The count is:<tab>3

使用单引号将返回字符串字面量。

此外,还有需要转义的字符。如果你有一个字符串:

'John said, "Hello"'

你可能会使用单引号,以避免在字符串中需要转义引号和反之亦然。


0

"解释转义字符和变量。'不做任何操作。


0
一句话概括:当您希望所有特殊字符(如\n)和变量(如$number)被注意并处理时。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接