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

PHP中单引号字符串和双引号字符串的区别是什么?,php,string,syntax,Php,String,Syntax,我有点困惑,为什么在PHP中看到一些字符串放在单引号中,有时放在双引号中的代码 我只知道在.NET或C语言中,如果它在单引号中,这意味着它是一个字符,而不是字符串。单引号中的字符串没有解释变量。双引号字符串不起作用 此外,双引号字符串可以包含不带反斜杠的撇号,而单引号字符串可以包含不带反斜杠的引号 单引号字符串在运行时速度更快,因为它们不需要解析。两种封闭字符都是字符串。一种类型的报价可方便地用于附上另一种类型的报价。”和“”。引号类型之间最大的区别在于,封闭的标识符引用被双引号内的引用所取代,

我有点困惑,为什么在PHP中看到一些字符串放在单引号中,有时放在双引号中的代码


我只知道在.NET或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.
在PHP中,“我的名字”和我的名字都是字符串。你可以阅读更多关于它的内容

你应该知道的是

$a = 'name';
$b = "my $a"; == 'my name'
$c = 'my $a'; != 'my name'
在PHP中,人们使用单引号定义常量字符串,如“a”、“我的名字”、“abc xyz”,而使用双引号定义包含标识符的字符串,如$b$c$d

还有一件事是

echo 'my name';
快于

echo "my name";
但是

慢于

echo "my $a";
对于字符串的其他用法也是如此。

不仅可以用两种方式指定,还可以用四种方式指定

将几乎完全按原样显示内容。变量和大多数转义序列将不会被解释。例外情况是,要显示文字单引号,可以使用反斜杠\'对其进行转义,要显示反斜杠,可以使用另一个反斜杠\\对其进行转义。因此,是的,即使是单引号字符串也会被解析。 将显示大量转义字符,包括一些正则表达式,并对字符串中的变量进行求值。这里重要的一点是,您可以使用大括号来分隔要计算的变量的名称。例如,假设您有一个变量$type,并且希望回显$type。这将查找变量$type。为了避免这种情况,可以在{$type}前面或后面加上左大括号。看看如何使用数组变量等。
字符串语法的工作方式类似于双引号字符串。在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变量。

“单引号” 指定字符串的最简单方法是将其括在单引号中。单引号通常更快,并且里面引用的所有内容都被当作普通字符串处理

例如:

双引号 在PHP中使用双引号以避免使用句点分隔代码注意:如果不想使用串联,请使用大括号{}来包含变量。字符串中的运算符

例如:

PHP中单引号与双引号是否有性能优势? 对。使用单引号稍微快一点

PHP不会使用额外的处理来解释单引号中的内容。使用双引号时,PHP必须解析以检查字符串中是否有任何变量。

一件事:

请务必注意,结束标识符为Heredoc的行不得包含除分号以外的任何其他字符;。这特别意味着标识符不能缩进,分号前后不能有空格或制表符

例如:

单引号、双引号、heredoc引号和nowdoc引号示例
有人可能会说我有点离题,但不管怎样,这里是:

由于字符串的内容,您不必选择: 回声现在是\游戏\时间。;或者回应“比赛时间到了”

如果您熟悉英文引号的用法以及撇号的正确字符,可以使用双引号或单引号,因为这不再重要: 现在是“比赛”时间。;echo说“比赛时间到了”


当然,如果需要,也可以添加变量。只是别忘了,它们只有在双引号中才会被计算

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

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

$world = "world";

"Hello '.$world.' ";

'hello ".$world."';

单引号字符串也使用更少的内存。在PHP中处理字符串的最快方法是使用单引号并使用。运算符连接字符串和变量。hmmm,如果我错了,请更正我,但PHP的基本语言是C rig
ht?那么为什么字符串引号在PHP和C中有所不同呢?@rob waminal:PHP可以用C实现,但它是一种不同的语言。PHP语言指定了这些语义。@Ribald-nowdoc语法不是更快吗?单引号字符串被解析为转义单引号和反斜杠。@Peter,你可能是对的,我从来没有认真研究过。PHP文档提出了速度要求,我决定相信这些文档:转义单引号和转义反斜杠即使在单引号字符串中也会被扩展。许多新加入PHP的开发人员都犯了一个错误:$mailbody='I want A break:\nDone';正在使\n保持活动状态。然而:$mailbody=我想换行:\n一行。;将解析换行符。我的2美分仅用于面试或恶意软件开发。只需比较两个表达式中的var_dump:$testwithasciandutf8characters=\x48\x41\x4c\114\117\u{0147}\u{012B}\u{0144}\u{014D}$simpleTest='\x48\x41\x4c\114\117\u{0147}\u{012B}\u{0144}\u{014D}!';$testWithAsciiAndUtf8Characters中的字符序列被转换为带实数字母的字符串。很棒的例子@Dani,简短而简单,正是我所需要的。感谢+1的卷曲支撑技巧。我不知道。太糟糕了,它没有遵循与shell脚本相同的约定,即${variablename}。我只使用双引号,当我需要它时,\n我的PHP代码中的任何其他内容都是单引号。看起来“herdoc”是从bash移植到PHP的,还是不是?无论如何,答案很好,所以a+1谢谢。PHP文档评论中有一个有趣的注释:-双引号字符串看起来非常慢,因为它们必须解析所有的反斜杠和美元符号来进行变量扩展,结果证明它是PHP中最快的字符串连接方法-PERIOD!只有当字符串完全是文本,没有需要解析的内容,也没有需要连接的内容时,单引号的速度才会更快,但是边距非常小,也不重要。注意:双引号的缓慢性几乎已经成为过去。最近的更新增加了双引号的处理速度,但在极端情况下除外。这是一个正确的说法,但与这里的问题无关。单引号的一个例外是不分析字符串中的任何内容,可以使用\'转义单个撇号以在字符串中使用,也可以使用\'显示反斜杠。请注意,传统的转义序列(如\n)将不会解析为换行符。我在所有答案中都看到:您可以在双引号中使用变量名来打印变量值,但您的意思是,变量名也应该用大括号括起来,以避免使用连接句点。那么如果$my_var和{$my_var}都输出$my_var的值,那么大括号代表什么呢?谢谢如果添加echo命令,将输出Hello'.world'和Hello.$world。。我很确定那不是你想要的。
$test = "variable";
echo "Hello Mr $test"; // the output would be: Hello Mr variable
echo 'Hello Mr $test'; // the output would be: Hello Mr $test
echo 'Start with a simple string';
echo 'String\'s apostrophe';
echo 'String with a php variable'.$name;
echo "Start with a simple string";
echo "String's apostrophe";
echo "String with a php variable {$name}";
   $str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
<?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;

?>
$world = "world";

"Hello '.$world.' ";

'hello ".$world."';