[英]What is the difference between single-quoted and double-quoted strings in PHP?
我有点困惑,为什么我在 PHP 中看到一些代码,其中字符串放在单引号中,有时放在双引号中。
我只知道在 .NET 或 C 语言中,如果它在单引号中,这意味着它是一个字符,而不是一个字符串。
PHP 字符串不仅可以通过两种方式指定,还可以通过四种方式指定。
\'
对其进行转义,而要显示反斜杠,您可以使用另一个反斜杠\\
对其进行转义(所以是的,即使是单引号字符串也会被解析)。$type
并且您想echo "The $types are"
。 这将寻找变量$types
。 要解决这个问题,请使用echo "The {$type}s are"
您可以将左大括号放在美元符号之前或之后。 查看字符串解析以了解如何使用数组变量等。<<<
开头。 在此运算符之后,提供一个标识符,然后是一个换行符。 字符串本身紧随其后,然后再次使用相同的标识符来关闭引号。 您不需要在此语法中转义引号。<<<
序列标识,但后面的标识符用单引号括起来,例如<<<'EOT'
。 nowdoc 中不进行任何解析。注意:单引号内的单引号和双引号内的双引号必须进行转义:
$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";
速度:
我不会过分强调单引号比双引号快。 在某些情况下,它们可能更快。 这是一篇文章,解释了自 PHP 4.3 以来单引号和双引号基本上同样快的一种方式( Useless Optimizations
朝向底部, C
节)。 此外,这个基准页面有一个单引号和双引号比较。 大多数比较是相同的。 有一个比较,双引号比单引号慢。
事物用双引号而不是单引号进行评估:
$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.
'
单引号指定字符串的最简单方法是将其括在单引号中。 单引号通常更快,并且内部引用的所有内容都被视为纯字符串。
例子:
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 中, '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
$fname = "David";
// Single quotes
echo 'My name is $fname.'; // My name is $fname.
// Double quotes
echo "My name is $fname."; // My name is David.
// Curly braces to isolate the name of the variable
echo "My name is {$fname}."; // My name is David.
// Example of heredoc
echo $foo = <<<abc
My name is {$fname}
abc;
// Example of nowdoc
echo <<< 'abc'
My name is "$name".
Now, I am printing some
abc;
?>
在 PHP 中,单引号文本被视为字符串值,双引号文本将通过替换和处理它们的值来解析变量。
$test = "variable";
echo "Hello Mr $test"; // the output would be: Hello Mr variable
echo 'Hello Mr $test'; // the output would be: Hello Mr $test
在这里,双引号解析值,单引号被视为字符串值(不解析$test
变量。)
两种封闭的字符都是字符串。 一种类型的引用方便地用于包含另一种类型的引用。 "'"
和'"'
。引号类型之间的最大区别在于,封闭的标识符引用被替换为双引号内,而不是单引号内。
在php中使用单引号和双引号的区别在于,如果我们在echo语句中使用单引号,那么它被视为一个字符串。 ...但是如果我们在双引号内输入变量名称,那么它将输出该变量的值以及字符串。
有人可能会说我有点跑题了,但无论如何:
您不一定要选择,因为您的字符串内容介于:
echo "It's \"game\" time.";
或echo 'It\'s "game" time.';
如果您熟悉英文引号的使用,以及撇号的正确字符,您可以使用双引号或单引号,因为它不再重要了:
echo "It's “game” time.";
并echo 'It's “game” time.';
当然,如果需要,您也可以添加变量。 只是不要忘记它们只有在双引号中才会被评估!
一件事:
非常重要的是要注意具有Heredoc结束标识符的行不能包含任何其他字符,除了分号 (;) 。 这尤其意味着标识符不能缩进,并且分号前后不能有任何空格或制表符。
例子:
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
这里有一些带变量的单引号和双引号的可能性
$world = "world";
"Hello '.$world.' ";
'hello ".$world."';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.