我不是PHP编程方面的专家,但我有点困惑,为什么我在PHP中看到一些代码用单引号括起来的代码,有时用双引号。
我只是在.NET或C语言中知道,如果它是单引号,那意味着它是一个字符,而不是一个字符串。
答案 0 :(得分:1007)
PHP strings不仅可以用两种方式指定,还可以四种方式指定。
\'
对其进行转义,并显示反斜杠,您可以使用另一个反斜杠\\
来转义它(所以是的,甚至解析单引号字符串)。$type
,那么echo "The $types are"
那将寻找变量$types
。要绕过这个用途echo "The {$type}s are"
你可以在美元符号之前或之后放左括号。看一下string parsing,了解如何使用数组变量等。<<<
开头。在此运算符之后,提供标识符,然后提供换行符。字符串本身跟随,然后再次使用相同的标识符来关闭引号。您不需要在此语法中转义引号。 <<<
序列标识,但后面的标识符用单引号括起来,例如: <<<'EOT'
。 在nowdoc中没有解析。 <强>速度强>
我不会过分强调单引号比双引号更快。在某些情况下,它们可能更快。这是一篇文章explaining one manner in which single and double quotes are essentially equally fast since PHP 4.3(Useless Optimizations
到底部,C
部分。此外,此benchmarks page具有单引号与双引号比较。大多数比较是相同的。有一个比较,其中双引号比单引号慢。
答案 1 :(得分:191)
事情用双引号评估,但不是单引号:
$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.
答案 2 :(得分:45)
'
单引号指定字符串的最简单方法是将其用单引号括起来。单引号通常更快,内部引用的所有内容都被视为普通字符串。
示例:强>
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必须解析以检查字符串中是否有任何变量。
答案 3 :(得分:36)
单引号字符串中没有解释变量。双引号字符串。
另外,双引号字符串可以包含没有反斜杠的撇号,而单引号字符串可以包含未转义的引号。
单引号字符串在运行时更快,因为它们不需要解析。
答案 4 :(得分:24)
在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'
,而使用双引号来定义包含{{1}等标识符的字符串}。
还有其他的事情,
"a $b $c $d"
比
快echo 'my name';
但
echo "my name";
慢于
echo 'my ' . $a;
对于其他使用过的字符串也是如此。
答案 5 :(得分:16)
<?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;
?>
答案 6 :(得分:12)
在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变量。)
答案 7 :(得分:11)
两种封闭的字符都是字符串。一种报价方便地用于包含其他类型的报价。 "'"
和'"'
。引号类型之间的最大区别是封闭的标识符引用替换为内部双引号,但不在单引号内。
答案 8 :(得分:1)
在php中使用单引号和双引号之间的区别在于,如果我们在echo语句中使用单引号,则将其视为字符串。 ...但是如果我们在双引号中输入变量名称,则它将输出该变量的值以及字符串。
答案 9 :(得分:0)
也许我有点晚了,而且有点偏离主题,但无论如何......无论如何......
您不必因为字符串的内容而选择:
alert("It's \"game\" time.");
或alert('It\'s "game" time.');
相反,你可以这样输入,然后使用双引号或单引号,因为它不重要:
alert("It’s “game” time.");
和alert('It’s “game” time.');
答案 10 :(得分:-1)
一件事:
非常重要的是要注意,结尾标识符 Heredoc 的行必须不包含其他字符,但分号(;)除外。这尤其意味着标识符可能不是缩进,并且在分号之前或之后可能没有任何空格或标签。
示例:强>
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
答案 11 :(得分:-2)
这里有一些单引号和双引号带有变量的可能性
$world = "world";
"Hello '.$world.' ";
'hello ".$world."';