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

efzxgjgh  于 2021-06-18  发布在  Mysql
关注(0)|答案(12)|浏览(421)

我有点困惑,为什么我在php中看到一些字符串放在单引号中,有时放在双引号中的代码。
我只知道在.net或c语言中,如果它在一个单引号中,这意味着它是一个字符,而不是一个字符串。

k97glaaz

k97glaaz1#

php字符串不仅可以用两种方式指定,还可以用四种方式指定。
单引号字符串将几乎完全“按原样”显示变量和大多数转义序列将不会被解释。例外情况是,要显示文字单引号,可以使用反斜杠对其进行转义 \' ,若要显示反斜杠,可以使用另一个反斜杠对其进行转义 \\ (所以是的,即使是单引号的字符串也会被解析)。
双引号字符串将显示大量转义字符(包括一些正则表达式),并计算字符串中的变量。这里的一个要点是,可以使用大括号来隔离要计算的变量的名称。例如,假设你有一个变量 $type 你想去吗 echo "The $types are" . 它将查找变量 $types . 为了避开这个用途 echo "The {$type}s are" 你可以把左括号放在美元符号之前或之后。看看字符串解析,看看如何使用数组变量等。
herdeoc字符串语法的工作原理类似于双引号字符串。首先是 <<< . 在这个操作符之后,提供一个标识符,然后是一个换行符。字符串本身紧跟其后,然后再次使用相同的标识符结束引号。在这种语法中不需要转义引号。
nowdoc(自php5.3.0以来)字符串语法的工作原理基本上类似于单引号字符串。不同的是,即使是单引号或反斜杠也不必转义。nowdoc与 <<< 用于heredocs的序列,但后面的标识符用单引号括起来,例如。 <<<'EOT' . nowdoc中没有解析。
注意:单引号内的单引号和双引号内的双引号必须转义:

$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";

速度:
我不会太看重单引号比双引号快。在某些情况下,它们可能更快。这篇文章解释了自PHP4.3以来单引号和双引号的速度基本相同的一种方式( Useless Optimizations 朝底部,部分 C ). 另外,这个基准页面有单引号和双引号的比较。大多数比较是相同的。有一种比较,双引号比单引号慢。

iezvtpos

iezvtpos2#

有一件事:
需要注意的是,结束标识符为heredoc的行不能包含其他字符,除了分号(;)。这尤其意味着标识符不能缩进,分号前后不能有空格或制表符。
例子:

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

wz3gfoph3#

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

b1zrtrql

b1zrtrql4#

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

rbl8hiat

rbl8hiat5#

单个带引号的字符串中没有解释的变量。双引号字符串不起作用。
此外,双引号字符串可以包含不带反斜杠的撇号,而单引号字符串可以包含不带反斜杠的引号。
单引号字符串在运行时更快,因为它们不需要解析。

nnsrf1az

nnsrf1az6#

在php中,两者 'my name' 以及 "my name" 是字符串。您可以在php手册中阅读更多关于它的内容。
你应该知道的是

$a = 'name';
$b = "my $a"; == 'my name'
$c = 'my $a'; != 'my name'

在php中,人们使用单引号来定义常量字符串,如 'a' , 'my name' , ' xyz' ,而使用双引号定义包含标识符的字符串,如 "a $b $c $d" .
另一件事是,

echo 'my name';

比…快

echo "my name";

但是

echo 'my ' . $a;

慢于

echo "my $a";

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

6ss1mwsb

6ss1mwsb7#

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

$world = "world";

"Hello '.$world.' ";

'hello ".$world."';
mbzjlibv

mbzjlibv8#

两种括起来的字符都是字符串。一种类型的引用可以方便地用来括起另一种类型的引用。 "'" 以及 '"' . 引号类型之间的最大区别在于,括起来的标识符引用将替换双引号内的标识符引用,而不是单引号内的标识符引用。

6ioyuze2

6ioyuze29#

有人可能会说我有点离题,但不管怎么说,这就是:
由于字符串的内容,您不必选择: alert("It's \"game\" time."); 或者 alert('It\'s "game" time.'); 如果您熟悉英文引号的用法,以及撇号的正确字符,您可以使用双引号或单引号,因为这不再重要: alert("It’s “game” time."); 以及 alert('It’s “game” time.'); 当然,如果需要,也可以添加变量。只是别忘了它们只有在双引号中才会被评估!

smtd7mpg

smtd7mpg10#

事物以双引号计算,但不以单引号计算:

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

t0ybt7op11#

'单引号

指定字符串的最简单方法是将其括在单引号中。单引号通常比较快,而且里面引用的所有内容都被视为普通字符串。
例子:

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

j2qf4p5b

j2qf4p5b12#

单引号、双引号、herdoc引号和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;

?>

相关问题