PHP中的单引号和双引号字符串有什么区别?
我不是PHP编程的专家,但我有点困惑为什么我在PHP中看到一些代码用单引号放入字符串,有时用双引号。
我只是在.NET或C语言中知道,如果它是单引号,这意味着它是一个字符,而不是一个字符串。
11个解决方案
957 votes
PHP字符串不仅可以通过两种方式指定,而且可以通过四种方式指定。
单引号字符串几乎完全“按原样”显示。 变量和大多数转义序列都不会被解释。 例外情况是,要显示文字单引号,您可以使用反斜杠Useless Optimizations对其进行转义,并显示反斜杠,您可以使用另一个反斜杠C转义它(所以是的,即使单引号字符串也会被解析)。
双引号字符串将显示一系列转义字符(包括一些正则表达式),并且将评估字符串中的变量。 这里重要的一点是,您可以使用花括号来隔离要评估的变量的名称。 例如,假设你有变量Useless Optimizations和你的C那将寻找变量$types。为了解决这个问题,请使用echo "The {$type}s are"您可以在美元符号之前或之后放置左括号。 看一下字符串解析,看看如何使用数组变量等。
Heredoc字符串语法就像双引号字符串一样。 它以Useless Optimizations开头。在此运算符之后,提供标识符,然后提供换行符。 字符串本身如下,然后再次使用相同的标识符来关闭引号。 您不需要在此语法中转义引号。
Nowdoc(自PHP 5.3.0开始)字符串语法基本上类似于单引号字符串。 不同之处在于,甚至不需要转义单引号或反斜杠。 nowdoc用与heredocs相同的Useless Optimizations序列标识,但后面的标识符用单引号括起来,例如: C.在nowdoc中没有解析。
速度:
我不会过分强调单引号比双引号更快。 在某些情况下,它们可能更快。 这篇文章解释了自PHP 4.3以来单引号和双引号基本上同样快速的一种方式(Useless Optimizations向下,第C节)。 此外,此基准测试页面还有单引号和双引号比较。 大多数比较是相同的。 有一个比较,其中双引号比单引号慢。
Peter Ajtai answered 2019-01-18T09:25:41Z
179 votes
事情用双引号评估,但不是单引号:
$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.
Dani answered 2019-01-18T09:26:03Z
37 votes
单引号
指定字符串的最简单方法是将其用单引号括起来。 单引号通常更快,内部引用的所有内容都被视为普通字符串。
例:
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必须解析以检查那里是否有任何变量。
Janak Kanani answered 2019-01-18T09:27:38Z
34 votes
单引号字符串中没有解释变量。 双引号字符串。
此外,双引号字符串可以包含没有反斜杠的撇号,而单引号字符串可以包含未转义的引号。
单引号字符串在运行时更快,因为它们不需要被解析。
Borealid answered 2019-01-18T09:28:17Z
23 votes
在PHP中,'a'和'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";
对于其他使用的字符串也是如此。
Bang Dao answered 2019-01-18T09:29:31Z
15 votes
single,double,heredoc和nowdoc引号的示例
$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 = <<
My name is {$fname}
abc;
// Example of nowdoc
echo <<< 'abc'
My name is "$name".
Now, I am printing some
abc;
?>
Rabindra Nath answered 2019-01-18T09:29:54Z
11 votes
两种封闭的字符都是字符串。 一种报价方便地用于包含其他类型的报价。 引号类型之间的最大区别是封闭的标识符引用替换为内部双引号,但不在单引号内。
wallyk answered 2019-01-18T09:30:17Z
11 votes
在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变量。)
Maulik Bhojani answered 2019-01-18T09:30:47Z
0 votes
也许我有点晚了,有点偏离主题,但无论如何......
您不必选择因为您的字符串之间的内容:
alert("It’s “game” time.");或alert('It’s “game” time.');
相反,您可以这样输入,然后使用双引号或单引号,因为它无关紧要:
alert("It’s “game” time.");和alert('It’s “game” time.');
Takit Isy answered 2019-01-18T09:31:42Z
0 votes
$name = 'test';
$singleQuote = 'This is example for single quote $name'; // here $name variable not evaluating
echo $singleQuote; // Output: This is example for single quote $name
$singleQuote = "This is example for single quote $name"; // here $name variable will evaluate and replace variable value
echo $singleQuote; // Output: This is example for single quote test
Also inside single quote expression evaluate faster campare to double quotes
Mahadeva Prasad answered 2019-01-18T09:31:58Z
-1 votes
一件事:
请注意,除了分号(;)之外,具有Heredoc结束标识符的行必须不包含其他字符。 这尤其意味着标识符可能不会缩进,并且在分号之前或之后可能没有任何空格或制表符。
例:
$str = <<
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
srmilon answered 2019-01-18T09:32:28Z