协慌网

登录 贡献 社区

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

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

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

答案

PHP 字符串不仅可以通过两种方式指定,而且可以通过四种方式指定。

  1. 单引号字符串几乎完全 “按原样” 显示。变量和大多数转义序列都不会被解释。唯一的例外是显示一个单引号,你可以用一个反斜杠它\' ,并显示一个反斜杠,你可以用一个反斜杠转义\\所以,是的,即使是单引号的字符串被解析 )。
  2. 双引号字符串将显示一系列转义字符(包括一些正则表达式),并且将评估字符串中的变量。这里重要的一点是, 您可以使用花括号来隔离要评估的变量的名称 。例如,假设你有变量$type ,你可以echo "The $types are"这将寻找变量$types 。为了解决这个问题,请使用echo "The {$type}s are"你可以在美元符号之前或之后放置左括号。看一下字符串解析 ,看看如何使用数组变量等。
  3. Heredoc字符串语法的作用类似于双引号字符串。它以<<<开头。在此运算符之后,提供标识符,然后提供换行符。字符串本身跟随,然后再次使用相同的标识符来关闭引号。您不需要在此语法中转义引号。
  4. Nowdoc (自 PHP 5.3.0 开始)字符串语法基本上类似于单引号字符串。不同之处在于,甚至不需要转义单引号或反斜杠。 nowdoc 用与用于 heredocs 相同的<<<序列标识,但后面的标识符用单引号括起来,例如<<<'EOT'在 nowdoc 中没有解析。

速度:
我不会过分强调单引号比双引号更快。在某些情况下,它们可能更快。这篇文章解释了一种方式,其中单引号和双引号基本上同样快,因为 PHP 4.3Useless Optimizations到底部, 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.

'单引号

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

例:

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