PHP中单引号和双引号string有什么区别?
我不是PHP编程的专家,但我有点困惑,为什么我看到PHP中的一些代码,string放在单引号中,有时用双引号。
我只是在.NET或C语言中知道,如果是单引号,那就意味着它是一个字符,而不是一个string。
PHPstring不仅可以以两种方式指定,而且可以以四种方式指定。
- 单引号的string将几乎完全“按原样”显示。 variables和大多数转义序列不会被解释。 例外是要显示一个文字单引号,你可以使用反斜杠
\'
转义它,并显示一个反斜杠,你可以用另一个反斜杠\\
( 所以是的,即使单引号stringparsing )转义。 - 双引号string将显示大量的转义字符(包括一些正则expression式),并且string中的variables将被计算。 这里重要的一点是你可以使用花括号来隔离你想要评估的variables的名字 。 例如,让我们假设你有variables
$type
而你要echo "The $types are"
这将查找variables$types
。 为了解决这个问题,echo "The {$type}s are"
您可以在左边大括号之前或之后放置大括号。 看看stringparsing看看如何使用数组variables等。 - Heredocstring语法就像双引号string一样工作。 它始于
<<<
。 在这个操作符之后,提供一个标识符,然后是一个换行符。 string本身遵循,然后再次相同的标识符来closures报价。 你不需要在这个语法中转义引号。 - Nowdoc (自PHP 5.3.0起)的string语法基本上像单引号string一样工作。 不同的是,甚至连单引号或反斜杠都不能逃脱。 nowdoc用与heredocs相同的
<<<
序列来标识,但是下面的标识符用单引号引起来,例如<<<'EOT'
。 nowdoc中没有parsing。
速度:
我不会太重视单引号比双引号快。 他们在某些情况下可能会更快。 这里有一篇文章解释了自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.
单引号
指定string的最简单的方法是用单引号括起来。 单引号通常比较快,而引用的所有内容都被视为纯string。
例:
echo 'Start with a simple string'; echo 'String\'s apostrophe'; echo 'String with a php variable'.$name;
双引号
在PHP中使用双引号以避免必须使用句点来分隔代码(注意:如果您不想在string中使用连接( .
)运算符),请使用大括号{}
来包含variables。
例:
echo "Start with a simple string"; echo "String's apostrophe"; echo "String with a php variable {$name}";
在PHP中是否有性能优势单引号与双引号?
是。 使用单引号稍快。
PHP不会使用额外的处理来解释单引号内的内容。 当你使用双引号时,PHP必须parsing来检查那里是否有variables。
单引号string在其解释中没有variables。 双引号string。
此外,双引号string可以包含没有反斜杠的撇号,而单引号string可以包含未转义的引号。
单引号的string在运行时更快,因为它们不需要被parsing。
在PHP中, 'my name'
和"my name"
都是string。 您可以在PHP手册中阅读更多信息。
你应该知道的是
$a = 'name'; $b = "my $a"; == 'my name' $c = 'my $a'; != 'my name'
在PHP中,人们使用单引号来定义一个常量string,如'a'
, 'my name'
, 'abc xyz'
,而使用双引号来定义一个string包含标识符如"a $b $c $d"
。
而其他的事情是,
echo 'my name';
比…更快
echo "my name";
但
echo 'my ' . $a;
比…慢
echo "my $a";
对于其他使用的string也是如此。
两种封闭的字符都是string。 一种types的报价方便地用于附上另一种types的报价。 "'"
和'"'
引号types之间的最大区别在于封闭的标识符引用被replace为双引号内部,而不是单引号内。
在PHP中,单引号文本被视为string值,双引号文本将通过replace和处理它们的值来parsingvariables。
$test = "variable"; echo "Hello Mr $test"; // the output would be: Hello Mr variable echo 'Hello Mr $test'; // the output would be: Hello Mr $test
在这里,双引号分析值,单引号被认为是string值(没有parsing$ testvariables)。
单引号,双引号,heredoc,nowdoc引号的示例
<?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; ?>
一件事:
注意到非常重要的是,具有Heredoc的closures标识符的行不能包含除分号(;)之外的其他字符。 这意味着特别是标识符不能缩进 ,在分号之前或之后可能没有空格或制表符 。
例:
$str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD;
如果我们在echo语句中使用双引号,它将检查variables数据和string。
如果我们在echo语句中使用单引号,它将只将所有数据视为string。
欲了解更多信息,请参阅http://phptutorial.co.in/php-echo-print/