`
TemplarAssassin
  • 浏览: 7166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

php 中单双引号 花括号详解

php 
阅读更多
                                         
php总结


基础知识总结  一:  关于php中单引号 双引号 花括号 问题总结



在php 中 字符串可以用 单引号  也可以用双引号  引起来表示,输出等。


例如:
<?php 
     echo  "aabbcc";    
     echo 'aabbcc';
?>


他们的输出是一样的。都会打印出  aabbcc

但是 如果将aabbcc 赋值给一个变量,那么它又该如何输出呢?

<?php 
$a = "aabbcc";//或者$a='aabbcc';
echo $a;
echo "$a"; //在这里你会发现 他们的输出都是 aabbcc
//如果是输出并且回车呢
echo $a."\n";
echo "$a\n"; 
//这两种方式都是可以的。输出都是aabbcc  为什么呢,

?>



是因为“”双引号 在php中有解释的功能,它会去解释这个字符串  如果字符串中有变量或者转义字符  它会一并解释了 在进行输出 。而单引号没有解释功能,也就是说,当你 echo ‘$a’; 或者echo '\n'; 它只会当作字符串输出  $a  \n  并不会输出你所想要的解释好的变量或者转移字符。

什么是解释功能? 其实这仅仅是,如果你用双引号输出字符串的时候,系统会去正则的匹配$符号,从而识别变量。转义字符也是。。。




针对上面转义那一块的情况还有一种情况。我们分别输出 ‘  单引号 和  双引号 “ 

echo '\'';
echo "'"; //双引号括住单引号,避免了再去用\ 转义

echo "\"";
echo '"';  //针对双引号,单引号有了避免了转义的操作。


所以,通过上面的解释,我们就可以认定为,当我们只是输出字符串的时候,不存在需要解释的东西的时候,我们应该直接用 ‘’  单引号  这样可以省略一个解释的过程, 在运行速度上虽然看不到明显的提升,但是原理上运行效率是高于用双引号的。 当我们输出的内容需要解释时,我们可以用“” 双引号。 例如 echo "aaaaa$a"; 输出为  aaaaaaabbcc

在这里发生了一个问题。 请看代码

$res = 'xxx';    //第一步
echo "aaa$resbbbb"; //第二步
//这样,php在解析过程中,会当作$resbbbb 是一个变量,自然就会报错,
//如何规避这样的情况呢。
echo “aaa{$res}bbbb”; //第三步



第二步  笔者其实是想要 变量 $res。但是获取到的是$resbbbb   ,
         因为zend解析的时候用的是正则匹配。并不知道你只想要res 。正则识别的是变量,只要是变量的字符(_字符数字,并且不是数字开头),那么系统正则就会一直匹配。如果有空格 那么变量识别自然到此为止。$ 和  空格  之间的就是变量名。(当然这里的空格 只要不是变量命名规范的字符就行)
echo  “aaa$res bbbb”; 这句话就会运行正常,只不过输出的字符串中多了一个空格。

笔者  不想要 多余的这个空格呢?

      那么就用第三步的代码  echo "aaa{$res}bbbb";
      这样写,zend解析的时候,同样是正则找到两个花括号。 {}中的字符会再此使用正常双引号的正则匹配。 从而直接找到$res . 而花括号不会输出  

假如说  花括号中是{aaa   $res} 呢?即: echo "aaa{ggg $res}bbbb";   也就是  花括号中不仅仅只有变量  或者 不是变量。
      这个时候,系统会重新判断将整个字符串用双引号的正则去解析查找变量。此时,res 后面的 “}”  不属于变量命名。

所以 上面的输出  将会是:  aaa{ggg xxx}bbbb


总结: 当字符串和变量拼接输出的时候。 运行效率较高的是 {} 括住变量。当然{}中不要有非变量,不然将会比    用 “” 直接引起来慢。  


详细的运行效率问题  可以参考下面的博客地址:
http://blog.sina.com.cn/s/blog_776f30430100skqv.html



分享到:
评论

相关推荐

    再谈PHP中单双引号的区别详解

    单引号和双引号到底有啥区别呢?很多朋友都不太清楚,下面通过本文给大家介绍PHP中单双引号的区别详解,感兴趣的朋友一起学习吧

    分析PHP中单双引号的误区和双引号小隐患

    许多程序员以为在PHP中单引号和双引号是一样的,其实这要看怎么用法,在有些方面它们确实是一样,但有一些方面它们也有着很大的区别,今天小编就来为您说说有哪些...PHP双引号小隐患 PHP很多语法特性会让攻击者有机可乘,

    浅谈PHP中单引号和双引号到底有啥区别呢?

    本文向我们简单介绍了php中单双引号的区别,以及对比了下javascript中单引号和双引号的区别,方便我们更好的理解,非常实用,推荐给大家

    简单概括PHP的字符串中单引号与双引号的区别

    单引号与双引号的不同: ” “双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。 ‘ ‘单引号里面的不进行解释,直接输出。  单引号解析的时间比双引号快 。 单引号支持\转义符,双引号支持的转义符...

    PHP当中单引号和双引号的区别

    使用PHP脚本语言进行开发,什么时候用单引号、什么时候使用双引号对运行效率至关重要,想学习如何在PHP中区分单双引号的使用,请下载此文档,希望对需要的朋友带来帮助,谢谢。

    linux系统中单引号和双引号的区别

    详细解释了linux系统命令行和脚本编程中的引号的使用,对于命令运行机制的理解很有帮助

    php单引号和双引号的区别

    php单引号和双引号的区别

    单引号与双引号在不同语言中的区别(C语言,Python语言,Matlab语言)

    单引号和双引号 截然不同,单引号 表示 字符,双引号 表示 字符串。 Python语言 两者都可以用,不用区别,都是字符串。 Matlab语言 早期的版本,只能用 单引号,表示的是字符串。双引号用不成,会报错。 从 R2017a ...

    php下防止单引号,双引号在接受页面转义的设置方法

    PHP页面中如果不希望出现以下...PHP中单引号与双引号的区别分析php 输出双引号"与单引号”的方法PHP 单引号与双引号的区别PHP的单引号和双引号 字符串效率php 防止单引号,双引号在接受页面转义分析PHP中单双引号的误区

    PHP中单引号与双引号的区别分析

    在PHP中,我们可以使用单引号或者双引号来表示字符串。不过我们作为开发者,应该了解其中的区别。单引号与双引号对于定义字符一个是可以解析变量一个是会把变量直接输出来,同时单引号与双引号在字符处理上单引号要...

    php 防止单引号,双引号在接受页面转义

    您可能感兴趣的文章:简单概括PHP的字符串中单引号与双引号的区别PHP中单引号与双引号的区别分析PHP 单引号与双引号的区别php 输出双引号"与单引号”的方法PHP的单引号和双引号 字符串效率浅谈PHP中单引号和双引号...

    SQL中存储过程中SQL语句的单引号和双引号问题[总结].pdf

    SQL中存储过程中SQL语句的单引号和双引号问题[总结].pdf

    js中单引号与双引号冲突问题解决方法

    介绍了js中单引号与双引号冲突问题解决方法,有需要的朋友可以参考一下

    替换php字符串中的单引号为双引号的方法

    您可能感兴趣的文章:php中的单引号、双引号和转义字符详解PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠浅谈PHP中单引号和双引号到底有啥区别呢?PHP中单引号与双引号的区别分析php 输出双引号"与单引号”的...

    SQL Server中单引号的两种处理技巧

    而采用非绑定方式时许多程序员大都忽略了对单引号的特殊处理,一旦SQL语句的查询条件的变量有单引号出现,数据库引擎就会报错指出SQL语法不对,本文为大家介绍两种可以解决和处理这种单引号的问题的方法(以VB为例子...

    jquery 单引号和双引号的区别及使用注意

    在js中单引号和双引号都是一样的,平时使用的时候尽量用单引号,只有碰到嵌套的时候才会同时用两种引号,感兴趣的朋友可以了解下

    python里的单引号和双引号的有什么作用

    在Python当中表达字符串既可以使用单引号,也可以使用双引号,那两者有什么区别吗? python单引号和双引号的区别 简单来说,在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符串。但是这两种通用的...

Global site tag (gtag.js) - Google Analytics