PHP strings 不仅可以通过两种 方式指定,还可以通过四种 方式指定。
单引号字符串将几乎完全“按原样”显示内容。不会解释变量和大多数转义序列。例外情况是,要显示文字单引号,您可以使用反斜杠 \' 对其进行转义,而要显示反斜杠,您可以使用另一个反斜杠 \\ 对其进行转义(所以是的,即使是单引号字符串也会被解析)。双引号字符串将显示大量转义字符(包括一些正则表达式),并且将评估字符串中的变量。这里重要的一点是,您可以使用花括号来隔离要评估的变量的名称。例如,假设您有变量 $type 并且您想回显“The $types are”。这将寻找变量 $types。要解决这个问题,请使用 echo "The {$type}s are" 您可以将左大括号放在美元符号之前或之后。查看字符串解析以了解如何使用数组变量等。 Heredoc 字符串语法类似于双引号字符串。它以 <<< 开头。在此运算符之后,提供一个标识符,然后是一个换行符。字符串本身紧随其后,然后再次使用相同的标识符来关闭引号。您不需要在此语法中转义引号。 Nowdoc(自 PHP 5.3.0 起)字符串语法本质上与单引号字符串类似。不同之处在于,甚至不必转义单引号或反斜杠。 nowdoc 使用与 heredocs 相同的 <<< 序列来标识,但后面的标识符用单引号括起来,例如 <<<'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 具有单引号和双引号比较。大多数比较是相同的。有一个比较,双引号比单引号慢。
事物用双引号而不是单引号进行评估:
$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:\nDone.';
使 \n
保持活跃。而: $mailbody = "I want a line break:\nDone.";
将解析换行符。
$testWithAsciiAndUtf8Characters = "\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!";
$simpleTest = '\x48\x41\x4c\114\117 \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 必须解析以检查字符串中是否有任何变量。
\'
转义单个撇号以在字符串中使用(或 \\'
以显示反斜杠)。请注意,传统的转义序列,例如 \n
不会被解析为换行符。 PHP docs on strings
"{$one}"
而不是 "$one"
的原因不是可读性,而是用于精确的变量查找。 { }
还允许进行数组和对象查找。用于字符串连接的点运算符仍然需要用于函数查找
单引号字符串中没有变量被解释。双引号字符串可以。
此外,双引号字符串可以包含不带反斜杠的撇号,而单引号字符串可以包含未转义的引号。
单引号字符串在运行时速度更快,因为它们不需要被解析。
在 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.';
当然,如果需要,您也可以添加变量。只是不要忘记它们只有在双引号中才会被评估!
不定期副业成功案例分享
${variablename}
。\n
时,我的PHP
代码中的任何其他内容都在单引号中。"
双引号的缓慢性已成为过去。如今,更新增加了双引号的处理速度,几乎在所有极端情况下都是如此。