首页 > 其他 > 详细

单引号和双引号

时间:2020-04-29 16:17:07      阅读:55      评论:0      收藏:0      [点我收藏+]

PHP中使用引号的一般规则是:
单引号引用的内容将按照字面表达原样引用;
双引号引用的内容将需要做推断处理。

规则很简单,然而使用时还是会有一些困惑。

下面这段代码尝试理清这两者的微妙关系:

    <?php
    $_firstName = ‘Michael‘;
    $_lastName = "Jackson";
    //建立两个变量,因为都是字符串型,赋值使用单引号或双引号没有区别。

    $_name1 = ‘$_firstName $_lastName‘;
    $_name2 = "$_firstName $_lastName";
    //拼接之前建立的变量得到两个新的变量,此时单引号和双引号将出现不同的处理结果:
    //$_name1 的值会是 $_1stName $_2ndName;
    //$_name2 的值则会是 Michael Jackson。

    print "打印双引号中内容: The name is $_name1 or The name is $_name2<br />";
    print ‘打印单引号中内容: The name is $_name1 or The name is $_name2‘;
    //打印变量值,print语句中的单引号和双引号再次显示出处理结果的不同。
    ?>

执行这段代码在浏览器中显示的结果是这样的:

    打印双引号中内容: The name is $_firstName $_lastName or The name is Michael Jackson
    打印单引号中内容: The name is $_name1 or The name is $_name2

到这里并不难理解,但有趣的是引号可以嵌套,双引号中嵌单引号或单引号中嵌双引号一般都没什么问题;双引号中嵌双引号或单引号中嵌单引号也是可以的,只是内嵌的引号要被转义;而且,内嵌的引号并不会影响一般性处理规则。

修改以上代码如下:

    <?php
    $_firstName = ‘Michael‘;
    $_lastName = "Jackson";


    $_name1 = ‘$_firstName $_lastName‘;
    $_name2 = "$_firstName $_lastName";

    print "打印双引号中内容: The name is ‘$_firstName $_lastName‘ or The name is ‘$_name2‘<br />";
    print ‘打印单引号中内容: The name is "$_name1" or The name is "$_name2" ‘;
    ?>
    
执行这段代码在浏览器中显示的结果是这样的:

    打印双引号中内容: The name is ‘Michael Jackson‘ or The name is ‘Michael Jackson‘
    打印单引号中内容: The name is "$_name1" or The name is "$_name2"
    
可以看到双引号中嵌入单引号并不会影响对单引号中变量值的推断,单引号中嵌入双引号也不会出现新的推断,内嵌的引号都是照原样处理。

然后又有一个例外,在引用关联索引的数组元素时,双引号内嵌的单引号会触发解析错误,比如以下语句:

    print "The element is $_array[‘index‘]";
    
一个常用的解决办法是用花括号将数组结构封装起来:

    print "The element is {$_array[‘index‘]}";

单引号和双引号

原文:https://www.cnblogs.com/riverman/p/12802789.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!