string函数 - php数组




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

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

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


单引号

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

例:

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必须解析以检查那里是否有变量。


单引号,双引号,heredoc和nowdoc引号的示例

<?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;

?>

不仅可以用两种方式指定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.3 (基本Useless 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.

单引号字符串在其解释中没有变量。 双引号的字符串。

此外,双引号字符串可以包含没有反斜杠的撇号,而单引号字符串可以包含未转义的引号。

单引号字符串在运行时更快,因为它们不需要进行分析。


在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变量)。


$name = 'test';
$singleQuote = 'This is example for single quote $name'; // here $name variable not evaluating 
echo $singleQuote; // Output: This is example for single quote $name
$singleQuote = "This is example for single quote $name"; // here $name variable will evaluate and replace variable value
echo $singleQuote; // Output: This is example for single quote test

Also inside single quote expression evaluate faster campare to double quotes






syntax