好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
在PHP中,单引号字符串和双引号字符串之间有什么区别? 关闭 返回上一级  

在PHP中,单引号字符串和双引号字符串之间有什么区别?
+ 查看更多

发布日期:2017-03-25 15:49
分类:PHP
浏览次数:199

我刚接触PHP编程,我发现有的PHP字符串在单引号里,有的则在双引号里,这样让我很困惑。在此之前,我只了解.Net和C语言,在它们里面单引号表示字符而不是字符串。

 

回答

和茴香豆的茴字一样,在PHP中,字符串可以通过4种方式指定:

 

1.单引号

单引号表示的字符串会显示字符串本身, 其中的变量和大多数的转义序列不会被解释 。会被解释的特例是:要想表示单引号本身,那么需要用\,比如\',表示反斜杠本身需要使用\\来表示。如果您想打印一个变量名字,例如$abc,那么最好使用单引号,因为单引号不会解析变量的名字。

 

2.双引号

双引号可以解释包括正则表达式在内的转义字符,其中包含的变量也会被解析。很重要的一点是PHP在$之后组合尽量多的标识以形成一个合法的变量名,你可以用花括号来明确变量名的界线。例如你现在有变量$type,但是有如下代码:

echo "The $types are" 

它会寻找变量$types来解析,在这里就可以使用花括号来明确你想要的变量是$tyoe

echo "The {$type}s are" 

此处的{可以放在$之前或者之后(但必须紧挨着它),关于更深入的变量解析,如使用数组可以在下面网址查阅有关变量解析的文档。

 

3.HereDoc

HereDoc语法类似于双引号字符串的语法。它要以<<<开始,并在其后提供一个标识符并换行。接下来写字符串本身的内容,最后以之前的标识符作为结束标志。在这种表达方式中,不需要转义符。
以下为在php.net找到的示例


class foo
{
    var $foo;
    var $bar;

    function foo()
    {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
$name = 'MyName';

echo <<
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>

输出结果如下:

My name is "MyName". I am printing some Foo.
Now, I am printing some Bar2.
This should print a capital 'A': A

 

4.NowDoc

NowDoc在语法上就类似单引号(PHP 5.3.0之后)。区别在于不需要转义'或者\。它的开始标志也是<<<,与HereDoc 相同,但是后面的标识符用单引号括起来,比如<<<'EOT'。在NowDoc中不进行解析。

关于速度:

关于它们速度的对比,这里有一篇文章介绍了在PHP 4.3以后从本质上他们是一样快的。

http://phplens.com/lens/php-book/optimizing-debugging-php.php

另外在下面网址有关于单引号和双引号的速度对比,大部分是相同的,只有一个对比双引号比单引号慢。

http://www.phpbench.com/

上一篇PHP中如何返回HTTP响应代码?
如何使用PHP得到数组的第一个元素?下一篇
下一篇如何使用PHP得到数组的第一个元素?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号