`
TemplarAssassin
  • 浏览: 7416 次
  • 性别: 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中单双引号的区别详解

    - 当需要在双引号字符串中包含花括号时,需要使用转义字符 `\`,如 `"value = \{$var}"`,以确保花括号被视为普通字符而不是变量起始标志。 - 花括号在字符串中用于明确指定变量,即使在单引号字符串中,如 `echo ...

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

    下面我们就详细分析PHP中单双引号的误区以及双引号带来的潜在问题。 首先,单引号和双引号在表示字符串时的基本区别在于对变量的解析。在PHP中,当使用双引号包围字符串时,其中的变量会被解析并替换为它们的值。...

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

    ### Linux系统中单引号和双引号的区别 在Linux系统中,无论是命令行操作还是脚本编程,正确地使用单引号(`'`)和双引号(`"`)是非常重要的。这两种引号在处理字符串时有着不同的规则和用途,理解它们之间的差异...

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

    本文详细解释了PHP中单引号与双引号之间的区别,并与JavaScript中引号的使用进行了简单的对比,以便我们更好地理解。 首先,在PHP中,单引号与双引号在基本用法上是类似的,都用来界定字符串的开始和结束。但是,...

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

    在PHP编程语言中,字符串可以用单引号 `'` 或双引号 `"` 来定义。虽然两者都用于创建字符串,但它们在处理变量和转义序列时存在显著差异,这些差异对性能和代码的可读性都有影响。 1. **变量插入**: - **双引号**...

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

    在PHP编程语言中,单引号...总之,理解并灵活运用PHP中单引号和双引号的差异,可以帮助我们写出更加高效、易读的代码。在不需要解析变量或特殊字符时,优先选择单引号;而在涉及变量或需要特殊转义序列时,使用双引号。

    php单引号和双引号的区别

    字符串可以由单引号('')或双引号(" ")包围,但它们之间存在关键性的区别,这些差异主要体现在变量解析、转义序列处理以及多行字符串定义上。 ### 变量解析 **双引号(" ")**: 当使用双引号包围字符串时,PHP会解析...

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

    SQL 中存储过程中 SQL 语句的单引号和双引号问题 在 SQL 中,单引号和双引号的问题是一个常见的混淆点,特别是在存储过程中编写 SQL 语句时。下面将对此问题进行详细的解释和总结。 一、单引号和双引号的基本概念 ...

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

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

    sql语句中单引号,双引号的处理方法

    以下是对SQL语句中单引号和双引号处理方法的详细解释: 1. **插入字符串型数据**: 当你需要插入字符串类型的数据,如姓名时,字符串需要用单引号括起来。例如,插入姓名为"张红"的记录,SQL语句应写为`INSERT ...

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

    总结,处理SQL Server中单引号问题的关键在于理解转义字符的概念以及如何利用参数化查询的优势。在实际编程中,推荐使用参数化查询,以提高性能和安全性。同时,为了防止SQL注入攻击,应避免直接在SQL语句中拼接用户...

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

    解决JavaScript中单引号与双引号冲突的常见方法有几种,下面将逐一介绍。 1. 转义引号 在JavaScript字符串中,可以通过反斜杠(\)来转义引号,使得引号成为字符串的一部分,而不是字符串的结束标志。例如: ```...

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

    总结来说,jQuery中单引号和双引号的区别主要体现在字符串嵌套时的使用策略。一般推荐的做法是选择一种引号类型作为默认,当需要嵌套字符串时,使用另一种引号以避免语法错误。保持良好的编码习惯,可以提高代码的...

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

    在Python编程语言中,单引号 `'` 和双引号 `"` 主要用于定义字符串。它们之间实际上没有本质的区别,都是用来创建字符串对象的。在Python中,你可以自由选择使用单引号还是双引号来包围字符串内容,这在很多其他编程...

Global site tag (gtag.js) - Google Analytics