在PHP中,单引号和双引号字符串有什么区别?
P粉604507867
P粉604507867 2023-08-18 11:45:01
0
2
694
<p>我有点困惑,为什么在PHP中有些代码中的字符串使用单引号,有些使用双引号。</p> <p>我只知道在.NET或C语言中,如果使用单引号,那意味着它是一个字符,而不是一个字符串。</p>
P粉604507867
P粉604507867

全部回复(2)
P粉311089279

双引号中的内容会被解析,而单引号中的内容不会被解析:

$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.
P粉741678385

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

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

注意: 单引号内的单引号和双引号内的双引号必须进行转义:

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

速度:
没有区别
请阅读一篇来自PHP核心开发者的可信文章。说到测试,我们永远不应该将其视为理所当然。必须理解编写可信测试以及解释其结果需要很多知识和经验。这意味着大多数测试都是虚假的。例如,在像这样的代码中

for($i=0;$i<100000;$i++) {
    'string';
}

引号字符串只被解析一次,与整个脚本一起,然后被转换为操作码。然后执行一百万次。因此,它测量的不是解析。这只是冰山一角。对于像这样的纳米基准测试,几乎不可能创建一个不会被某些干扰副作用破坏的可信测试。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板