【发布时间】:2023-01-11 05:42:21
【问题描述】:
我有点困惑,为什么我在 PHP 中看到一些代码将字符串放在单引号中,有时又放在双引号中。
我只知道在 .NET 或 C 语言中,如果它在单引号中,则意味着它是一个字符,而不是一个字符串。
【问题讨论】:
我有点困惑,为什么我在 PHP 中看到一些代码将字符串放在单引号中,有时又放在双引号中。
我只知道在 .NET 或 C 语言中,如果它在单引号中,则意味着它是一个字符,而不是一个字符串。
【问题讨论】:
PHP strings 不仅可以在二方式,但在四方法。
',而要显示反斜杠,您可以使用另一个反斜杠将其转义 \ (所以是的,即使是单引号字符串也会被解析).$type,而您想要echo "The $types are"。这将查找变量$types。要解决此问题,请使用 echo "The {$type}s are" 您可以将左大括号放在美元符号之前或之后。查看string parsing 了解如何使用数组变量等。<<< 开头。在此运算符之后,提供标识符,然后是换行符。紧随其后的是字符串本身,然后是相同的标识符以结束引用。您不需要在此语法中转义引号。<<< 序列标识,但后面的标识符用单引号括起来,例如<<<'EOT'。nowdoc 中不进行任何解析。
笔记:必须转义单引号内的单引号和双引号内的双引号:
$string = 'He said "What's up?"';
$string = "He said "What's up?"";
速度:
我不会过分强调单引号比双引号更快。在某些情况下,它们可能更快。这是一篇文章 explaining one manner in which single and double quotes are essentially equally fast since PHP 4.3(Useless Optimizations 到底部,部分 C)。此外,benchmarks page 具有单引号与双引号比较。大多数比较都是相同的。有一个比较,双引号比单引号慢。
【讨论】:
${variablename}。
时,我的 PHP 代码中的任何其他内容都用单引号引起来。
"双引号的缓慢已经成为过去。这些天,在除极端情况外的所有情况下,更新增加了双引号的处理速度。
事情用双引号而不是单引号评估:
$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.
【讨论】:
$mailbody = 'I want a line break:
Done.'; 使
保持活动状态。而:$mailbody = "I want a line break:
Done."; 将解析换行符。
$testWithAsciiAndUtf8Characters = "HALLO u{0147}u{012B}u{0144}u{014D}!";$simpleTest = 'HALLO u{0147}u{012B}u{0144}u{014D}!';$testWithAsciiAndUtf8Characters中的字符序列被转换为具有真实字母的字符串。
'单引号指定字符串的最简单方法是用单引号将其括起来。单引号通常更快,内部引用的所有内容都被视为纯字符串。
例子:
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 docs on strings
"{$one}" 而不是 "$one" 的原因不是可读性而是精确变量查找。 { } 还允许数组和对象查找。用于字符串连接的点运算符仍然需要用于函数查找
{$foo}bar,因为 $foobar 会被解释为 {$foobar}。
单引号字符串中没有解释的变量。双引号字符串可以。
此外,双引号字符串可以包含不带反斜杠的撇号,而单引号字符串可以包含未转义的引号。
单引号字符串在运行时速度更快,因为它们不需要被解析。
【讨论】:
在 PHP 中,'my name' 和 "my name" 都是字符串。您可以阅读更多相关信息at the PHP manual。
你应该知道的是
$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";
对于其他使用的字符串也是如此。
【讨论】:
两种包含的字符都是字符串。一种类型的引用可以很方便地用于包含另一种类型的引用。 "'"和'"'。引号类型之间最大的区别是封闭的标识符引用被双引号内代替,而不是单引号内。
【讨论】:
有人可能会说我有点跑题了,但无论如何:
由于字符串的内容,您不一定必须选择:echo "It's "game" time.";或echo 'It's "game" time.';
如果您熟悉英文引号的使用,以及撇号的正确字符,您可以使用双引号或单引号,因为它们不再重要:echo "It’s “game” time.";和echo 'It’s “game” time.';
当然你也可以根据需要添加变量。只是不要忘记它们只有在双引号中才会被评估!
【讨论】: