PHP中单引号和双引号string有什么区别?

我不是PHP编程的专家,但我有点困惑,为什么我看到PHP中的一些代码,string放在单引号中,有时用双引号。

我只是在.NET或C语言中知道,如果是单引号,那就意味着它是一个字符,而不是一个string。

PHPstring不仅可以以两种方式指定,而且可以以四种方式指定。

  1. 单引号的string将几乎完全“按原样”显示。 variables和大多数转义序列不会被解释。 例外是要显示一个文字单引号,你可以使用反斜杠\'转义它,并显示一个反斜杠,你可以用另一个反斜杠\\所以是的,即使单引号stringparsing )转义。
  2. 双引号string将显示大量的转义字符(包括一些正则expression式),并且string中的variables将被计算。 这里重要的一点是你可以使用花括号来隔离你想要评估的variables的名字 。 例如,让我们假设你有variables$type而你要echo "The $types are"这将查找variables$types 。 为了解决这个问题, echo "The {$type}s are"您可以在左边大括号之前或之后放置大括号。 看看stringparsing看看如何使用数组variables等。
  3. Heredocstring语法就像双引号string一样工作。 它始于<<< 。 在这个操作符之后,提供一个标识符,然后是一个换行符。 string本身遵循,然后再次相同的标识符来closures报价。 你不需要在这个语法中转义引号。
  4. Nowdoc (自PHP 5.3.0起)的string语法基本上像单引号string一样工作。 不同的是,甚至连单引号或反斜杠都不能逃脱。 nowdoc用与heredocs相同的<<<序列来标识,但是下面的标识符用单引号引起来,例如<<<'EOT'nowdoc中没有parsing。

速度:
我不会太重视单引号比双引号快。 他们在某些情况下可能会更快。 这里有一篇文章解释了自PHP 4.3 ( 基本上 Useless OptimizationsC节)开始,单引号和双引号本质上是同样快的 。 此外,这个基准页面有一个单一的报价比较。 大部分的比较是相同的。 有一个比较双引号比单引号慢的比较。

事情得到双引号评估,但不是单一的:

 $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/