What is the difference between single-quoted and double-quoted strings in PHP?
我不是PHP编程专家,但我有点困惑为什么在PHP中看到一些字符串放在单引号中,有时放在双引号中。
我只知道在.NET或C语言中,如果它是单引号,那意味着它是一个字符,而不是字符串。
PHP字符串不仅可以用两种方式指定,而且可以用四种方式指定。
速度:我不会太重视单引号比双引号快。在某些情况下,它们可能更快。这里有一篇文章解释了一种方式,即单引号和双引号从php 4.3(
事物以双引号进行评估,但不以单引号进行评估:
1 2 3 | $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. |
单引号
指定字符串的最简单方法是用单引号括起来。单引号通常更快,内部引用的所有内容都被视为普通字符串。
例子:
1 2 3 | echo 'Start with a simple string'; echo 'String\'s apostrophe'; echo 'String with a php variable'.$name; |
在PHP中使用双引号可以避免使用句点来分隔代码(注意:如果不想在字符串中使用concatenation(
例子:
1 2 3 | echo"Start with a simple string"; echo"String's apostrophe"; echo"String with a php variable {$name}"; |
在PHP中,单引号和双引号是否有性能优势?
对。使用单引号稍微快一点。
PHP不会使用额外的处理来解释单引号中的内容。当使用双引号时,php必须解析以检查字符串中是否有任何变量。
单引号字符串中没有解释的变量。双引号字符串可以。
此外,双引号字符串可以包含不带反斜杠的撇号,而单引号字符串可以包含不带反斜杠的引号。
单引号字符串在运行时速度更快,因为它们不需要解析。
在PHP中,
你应该知道的是
1 2 3 | $a = 'name'; $b ="my $a"; == 'my name' $c = 'my $a'; != 'my name' |
在PHP中,人们使用单引号定义常量字符串,如
另一件事是,
1 | echo 'my name'; |
比快
1 | echo"my name"; |
但是
1 | echo 'my ' . $a; |
比慢
1 | echo"my $a"; |
对于其他使用的字符串来说,这是正确的。
单引号、双引号、HereDoc引号和Nowdoc引号示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?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中,单引号文本被视为字符串值,双引号文本将通过替换和处理变量值来解析变量。
1 2 3 | $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变量)。
这两种带圈字符都是字符串。一种类型的报价单方便地用于括住另一种类型的报价单。
也许我有点晚了,有点离题了,但不管怎么说,这就是…
您不必选择,因为字符串的内容介于:
相反,您可以这样键入,然后使用双引号或单引号,因为这并不重要:
一件事:
需要注意的是,带有hereDoc结束标识符的行不能包含任何其他字符,分号(;)除外。这意味着标识符不能缩进,分号前后也不能有任何空格或制表符。
例子:
1 2 3 4 5 | $str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD; |