搜索

首页  >  问答  >  正文

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

<p>我有点困惑,为什么在PHP中有些代码中的字符串使用单引号,有些使用双引号。</p> <p>我只知道在.NET或C语言中,如果使用单引号,那意味着它是一个字符,而不是一个字符串。</p>
P粉604507867P粉604507867537 天前729

全部回复(2)我来回复

  • P粉311089279

    P粉3110892792023-08-19 10:28:34

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

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

    回复
    0
  • P粉741678385

    P粉7416783852023-08-19 00:19:38

    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';
    }

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

    回复
    0
  • 取消回复