PHP中单引号和双引号字符串有什么区别?

问题描述 投票:-1回答:1

我有些困惑,为什么我在PHP中看到一些代码,其中字符串用单引号引起来,有时用双引号引起来。

我只是在.NET或C语言中知道,如果用单引号引起来,则表示它是字符,而不是字符串。

php function return id
1个回答
1068
投票

PHP strings不仅可以用two方式指定,还可以用four方式指定。

  1. Single quoted strings将几乎完全“按原样”显示事物。变量和大多数转义序列将不被解释。唯一的例外是,要显示文字单引号,可以使用反斜杠\'对其进行转义,而要显示反斜杠,可以使用另一个反斜杠\\是的,即使是单引号的字符串也可以被解析)。
  2. Double quote strings将显示许多转义字符(包括某些正则表达式),并且将评估字符串中的变量。这里重要的一点是您可以使用花括号分隔要评估的变量的名称。例如,假设您具有变量$type,而您想要echo "The $types are"。这将寻找变量$types。要解决此问题,请使用echo "The {$type}s are"您可以将左括号放在美元符号之前或之后。看看string parsing,了解如何使用数组变量等。
  3. Heredoc字符串语法类似于双引号字符串。它以<<<开头。在此运算符之后,提供了一个标识符,然后提供了换行符。字符串本身紧随其后,然后再次使用相同的标识符以关闭引号。您无需使用此语法对引号进行转义。
  4. Nowdoc(自PHP 5.3.0起)字符串语法在本质上类似于单引号字符串。区别在于,甚至不必转义单引号或反斜杠。 nowdoc使用与heredocs相同的<<<序列进行标识,但是其后的标识符用单引号引起来,例如<<<'EOT'在nowdoc中没有解析。

速度:我不会过分强调单引号比双引号更快。在某些情况下,它们可能更快。这是文章explaining one manner in which single and double quotes are essentially equally fast since PHP 4.3Useless Optimizations指向底部,C部分)。此外,此benchmarks page具有单引号与双引号的比较。大多数比较是相同的。有一个比较,双引号比单引号慢。


0
投票

这里有一些使用变量的单引号和双引号的可能性

$world = "world";

"Hello '.$world.' ";

'hello ".$world."';

-1
投票

[一件事:

非常重要的一点是,结尾标记为Heredoc的行除分号(;)外,不得包含其他任何字符。特别是,这意味着标识符可能不是indented,并且在分号之前或之后可能没有任何spacestabs

示例:

   $str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

-1
投票

也许我来晚了,有点题外话了,但还是这样:

由于字符串的内容之间,您不必选择:alert("It's \"game\" time.");alert('It\'s "game" time.');

如果您熟悉英文引号的使用以及撇号的正确字符,则可以使用双引号或单引号,因为不再重要:alert("It’s “game” time.");alert('It’s “game” time.');


209
投票

事物用双引号而不是单引号评估:

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

53
投票

'单引号

指定字符串的最简单方法是将其用单引号引起来。单引号通常会更快,并且将所有引号内的内容都视为纯字符串。

示例:

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必须解析以检查字符串中是否有任何变量。


37
投票

单引号字符串中没有解释的变量。用双引号引起来的字符串可以。

此外,双引号字符串可以包含无反斜杠的撇号,而单引号字符串可以包含未转义的引号。

单引号的字符串在运行时速度更快,因为它们不需要解析。


25
投票

在PHP中,'my name'"my name"都是字符串。您可以阅读有关它的更多信息at the PHP manual

您应该知道的是

$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";

对于其他使用的字符串也是如此。


17
投票

单,双,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;

?>

15
投票

在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变量。]


11
投票

两种封闭的字符都是字符串。一种类型的引用可以方便地用于封装另一种类型的引用。 "'"'"'。引号类型之间的最大区别是用封闭的标识符引用代替了双引号,而不是单引号。


2
投票

在php中使用单引号和双引号之间的区别在于,如果我们在echo语句中使用单引号,则将其视为字符串。 ...但是如果我们在双引号中输入变量名称,则它将输出该变量的值以及字符串。

© www.soinside.com 2019 - 2024. All rights reserved.