1

可能重复:
php中单引号和双引号字符串的区别

我是 PHP 的新手,我对如何指定字符串有点困惑。

似乎有 4 种方法来指定字符串

  1. 单引号字符串
  2. 双引号字符串
  3. 赫雷多克
  4. Nowdoc (PHP 5.3.0 起)

我想知道为什么有这么多类型的规范以及指定字符串的最佳方法是什么?

因为在这篇文章中它再次说单引号和双引号同样快,但还有其他人不同意。

为什么还要有单引号和双引号?在某些条件下,它是否会增加速度和准确性?

4

3 回答 3

2

单引号字符串比双引号字符串注意更少的转义序列。比较:

echo "one\ntwo";
# one
# two

和:

echo 'one\ntwo';
# one\ntwo

另一个关键区别是双引号字符串插入变量。单引号字符串不会。

至于heredoc 和nowdoc,它们只是以更好的方式指定长字符串(可能包含引号- 如果包含引号,您不必转义它们)的方法。为什么有两个?好吧,heredoc 是双引号字符串,就像 nowdoc 是单引号字符串一样。

(顺便说一下,所有这些信息和更多信息都可以在 PHP 文档中找到。)

因此,有很多不同类型的字符串文字,因为字符串文字有很多不同的用途。

于 2012-12-19T03:19:27.147 回答
2

http://php.net/manual/en/language.types.string.php

  • 单引号字符串基本上是普通字符串。它们仅在编译脚本时被解析
  • 双引号字符串在运行时解析
  • Heredocs是一种在多行上定义双引号字符串的方法,它使用特殊的开头和结尾序列
  • Nowdocs就是 Heredocs,只是像单引号字符串一样未解析

在性能方面,单引号字符串通常比双引号字符串更可取,因为它们基本上表示常量。因此,在大多数情况下,您将希望使用单引号字符串。

但是,在准备输出时,双引号字符串通常非常实用

$combined = "An $a and $b plus $c";
$combined = 'An '.$a.' and '.$b.' plus '.$c;

这些行是相等的,但您可能会猜到哪个更容易编写和维护。

您可能应该记住,虽然这对 PHP 来说是相当特定的,但大多数其他编程语言都支持类似的语法,但处理它们的方式相同。因此,对于那些真正存在的人来说,它们的存在只是为了让在字符串中写引号更容易(考虑"Someone can't handle an apostrophe, but it's not me."'<p class="some">Text.</p>'),而不必逃避每一个。

于 2012-12-19T03:21:38.800 回答
0

单引号内的每个字符和变量都按字面意思处理(一个例外是 \' 的组合,请参阅下面的“转义字符”)。以下代码不会产生打印变量值的预期结果:

  $name = 'Jon'; 
  echo 'Hello, $name';

该代码将按字面意思打印“Hello, $name”。

相反,双引号内的字符和变量将被解释。此代码将打印“你好,乔恩”:

$name = 'Jon'; 
echo "Hello, $name";

几乎所有的特殊转义序列也需要在双引号内使用。由于双引号字符串的解释,可以说它们的效率低于单引号字符串。但是,对于大多数应用程序,效率差异无关紧要。

于 2012-12-19T04:45:56.003 回答