简单概括PHP的字符串中单引号与双引号的区别
今天有个朋友问起,说下区别,顺便复习下。
单引号与双引号的不同:
- ""双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。
- ''单引号里面的不进行解释,直接输出。
- 单引号解析的时间比双引号快。
- 单引号支持\转义符,双引号支持的转义符更多。
$hello=3; echo"hellois$hello";//打印结果:hellois3 echo'hellois$hello';//打印结果:hellois$hello echo"hellois$hello\n";//打印结果:hellois2(同时换行) echo'hellois$hello\n';//打印结果:hellois$hello\n
PS:
今天看到老外提到了PHP的单引号的问题,其中提到了有趣的东西,摘录如下:
其中说装了PHP扩展VulcanLogicDisassembler后,可以看到PHP生成的中间码,
首先是:
echo"Thisisastring";
会转变为:
ECHO'Thisisastring'
而
echo'Thisisastring';
则变成
ECHO'Thisisastring'
,是一样的
如果是
echo"Thisisa$variable";
则PHP产生的OPCODE为
INITSTRING~0 2ADD_STRING~0~0'This' 3ADD_STRING~0~0'' 4ADD_STRING~0~0'is' 5ADD_STRING~0~0'' 6ADD_STRING~0~0'a' 7ADD_STRING~0~0'' 8ADD_VAR~0~0!0 9ECHO~0
而
echo"Thisisa".$variable;
则会变成
CONCAT~0'Thisisa'!0 2ECHO~0
可以见到,速度快很多了,用.连接的话