首页 文章

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

提问于
浏览
697

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

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

11 回答

  • 963

    PHP strings不仅可以用两种方式指定,而且可以用 four 方式指定 .

    • Single quoted strings几乎完全显示事物"as is."变量和大多数转义序列都不会被解释 . 例外情况是,要显示文字单引号,可以使用反斜杠 \' 对其进行转义,并显示反斜杠,可以使用另一个反斜杠 \\So yes, even single quoted strings are parsed )对其进行转义 .

    • Double quote strings将显示一系列转义字符(包括一些正则表达式),并将评估字符串中的变量 . 这里的一个重点是 you can use curly braces to isolate the name of the variable you want evaluated . 例如,假设您有变量 $type ,那么 echo "The $types are" 那将寻找变量 $types . 为了解决这个问题,请使用 echo "The {$type}s are" 您可以在美元符号之前或之后放置左括号 . 看看string parsing,看看如何使用数组变量等 .

    • Heredoc字符串语法的作用类似于双引号字符串 . 它以 <<< 开头 . 在此运算符之后,提供标识符,然后提供换行符 . 字符串本身如下,然后再次使用相同的标识符来关闭引号 . 您不需要在此语法中转义引号 .

    • Nowdoc(自PHP 5.3.0起)字符串语法基本上与单引号字符串相同 . 不同之处在于,甚至不需要转义单引号或反斜杠 . nowdoc用与heredocs相同的 <<< 序列标识,但后面的标识符用单引号括起来,例如: <<<'EOT' . No parsing is done in nowdoc.

    Speed:
    我不会过分强调单引号比双引号更快 . 在某些情况下,它们可能更快 . 这是一篇文章explaining one manner in which single and double quotes are essentially equally fast since PHP 4.3Useless Optimizations 在底部, C 部分) . 此外,这benchmarks page有单一与双引号比较 . 大多数比较是相同的 . 有一个比较,其中双引号比单引号慢 .

  • 37

    也许我有点晚了,有点偏离主题,但无论如何......

    你之间的内容是:'t have to choose because of your string'
    alert("It's \"game\" time.");alert('It\'s "game" time.');

    相反,您可以这样输入,然后使用双引号或单引号,因为它无关紧要:
    alert("It’s “game” time.");alert('It’s “game” time.');

  • 23

    事情用双引号评估,但不是单引号:

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

    在PHP中, 'my name'"my name" 都是字符串 . 你可以阅读更多关于它at the PHP manual .

    你应该知道的是

    $a = 'name';
    $b = "my $a"; == 'my name'
    $c = 'my $a'; != 'my name'
    

    在PHP中,人们使用单引号来定义常量字符串,如 'a''my name''abc xyz' ,同时使用双引号来定义包含 "a $b $c $d" 等标识符的字符串 .

    还有一件事是,

    echo 'my name';
    

    比...更快

    echo "my name";
    

    echo 'my ' . $a;
    

    比...慢

    echo "my $a";
    

    对于其他使用的字符串也是如此 .

  • 11

    single,double,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;
    
    ?>
    
  • 182

    两种封闭的字符都是字符串 . 一种报价方便地用于包含其他类型的报价 . "'"'"' . 引号类型之间的最大区别是封闭的标识符引用替换为内部双引号,但不在单引号内 .

  • -1

    One thing:

    请注意, Heredoc 的结束标识符行必须不包含其他字符,但 semicolon (;) 除外 . 这尤其意味着标识符可能不是 indented ,并且在分号之前或之后可能没有任何 spacestabs .

    Example:

    $str = <<<EOD
    Example of string
    spanning multiple lines
    using heredoc syntax.
    EOD;
    
  • 34

    单引号

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

    例:

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

  • 0

    单引号字符串中没有解释变量 . 双引号字符串 .

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

    单引号字符串在运行时更快,因为它们不需要被解析 .

  • 15

    在PHP中,单引号文本被视为字符串值,双引号文本将通过替换和解析变量处理他们的 Value .

    $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变量 . )

  • 0
    $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
    

相关问题