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

yipeiwu_com6年前PHP代码库

今天有个朋友问起,说下区别,顺便复习下。

单引号与双引号的不同:

  • " "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。
  • ' '单引号里面的不进行解释,直接输出。 
  • 单引号解析的时间比双引号快 。
  • 单引号支持\转义符,双引号支持的转义符更多 。
$hello= 3;
echo "hello is $hello"; // 打印结果:hello is 3 
echo 'hello is $hello'; // 打印结果: hello is $hello 
echo "hello is $hello\n"; // 打印结果: hello is 2 (同时换行) 
echo 'hello is $hello\n'; // 打印结果: hello is $hello\n

PS:
今天看到老外提到了PHP的单引号的问题,其中提到了有趣的东西,摘录如下:
其中说装了PHP扩展 Vulcan Logic Disassembler 后,可以看到PHP生成的中间码,
首先是:

echo "This is a string"; 

会转变为:

ECHO    'This is a string' 

echo 'This is a string'; 

则变成

 ECHO    'This is a string' 

,是一样的
如果是

echo "This is a $variable"; 

则PHP产生的OPCODE为

INIT STRING ~0 

2 ADD_STRING  ~0 ~0 'This' 

3 ADD_STRING  ~0 ~0 ' ' 

4 ADD_STRING  ~0 ~0 'is' 

5 ADD_STRING  ~0 ~0 ' ' 

6 ADD_STRING  ~0 ~0 'a' 

7 ADD_STRING  ~0 ~0 ' ' 

8 ADD_VAR    ~0 ~0 !0 

9 ECHO      ~0 

echo "This is a " . $variable; 

则会变成

CONCAT    ~0 'This is a ' !0 

2 ECHO      ~0 

可以见到,速度快很多了,用.连接的话

相关文章

php生成excel列名超过26列大于Z时的解决方法

本文实例讲述了php生成excel列名超过26列大于Z时的解决方法。分享给大家供大家参考。具体分析如下: 我们生成excel都会使用phpExcel类,这里就来给大家介绍在生成excel...

PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)

PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)

面象对向的三大特点:封装性、继承性、多态性 首先简单理解一下抽象:我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和行为提取出来,形成一个物理模型(模版),这种研究问题的方法称...

php结合正则获取字符串中数字

php结合正则获取字符串中数字 <?php $patterns = "/\d+/"; //第一种 //$patterns = "/\d/"; //第二种...

PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述

复制代码 代码如下: <?php /* 边学边做的,为方便自己翻阅而发布,更为得到高人指点而发布,欢迎高手指点...... 【提示】本例通过测试无误 【情景设计】 模拟计算机主板I...

在WordPress中实现评论头像的自定义默认和延迟加载

自定义 WordPress 默认评论头像 对于没有设置Gravatra头像的评论者来说,WordPress会显示一个你在后台设置的默认头像,可以是神秘人、空白、默认的Gravatar 标...