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

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

单引号与双引号的不同:

  • " "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出
  • ' '单引号里面的不进行解释,直接输出
  • 单引号解析的时间比双引号快 。
  • 单引号支持\转义符,双引号支持的转义符更多 。
rush:PHP;"> $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生成的中间码, 首先是:

rush:PHP;"> echo "This is a string";

会转变为:

rush:plain;"> ECHO 'This is a string'

rush:bash;"> echo 'This is a string';

则变成

rush:plain;"> ECHO 'This is a string'

,是一样的 如果是

rush:PHP;"> echo "This is a $variable";

PHP产生的OPCODE为

rush:plain;"> 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

rush:PHP;"> echo "This is a " . $variable;

则会变成

rush:plain;"> CONCAT ~0 'This is a ' !0

2 ECHO ~0

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...