PHP一些优先级的问题
直接看代码
<?php
echo '1'.print(2)+3,"\n";
不错,就是这么简单,但是很少有人能正确回答
我们执行一下
[root@localhost test]# php -dvld.active=1 test7.php
Finding entry points
Branch analysis from position: 0
Jump found. Position 1 = -2
filename: /data/www/test/test7.php
function name: (null)
number of ops: 6
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > ADD ~0 2, 3
1 PRINT ~1 ~0
2 CONCAT ~2 '1', ~1
3 ECHO ~2
4 ECHO '%0A'
3 5 > RETURN 1 branch: # 0; line: 2- 3; sop: 0; eop: 5; out1: -2
path #1: 0,
511
让人很诧异吧
换一种写法
<?php
echo '1',print(2)+3,"\n";
执行结果
[root@localhost test]# php -dvld.active=1 test7.php
Finding entry points
Branch analysis from position: 0
Jump found. Position 1 = -2
filename: /data/www/test/test7.php
function name: (null)
number of ops: 6
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > ECHO '1'
1 ADD ~0 2, 3
2 PRINT ~1 ~0
3 ECHO ~1
4 ECHO '%0A'
3 5 > RETURN 1 branch: # 0; line: 2- 3; sop: 0; eop: 5; out1: -2
path #1: 0,
151
再换一种
<?php
echo print(2)+3,"\n";
执行结果
[root@localhost test]# php -dvld.active=1 test7.php
Finding entry points
Branch analysis from position: 0
Jump found. Position 1 = -2
filename: /data/www/test/test7.php
function name: (null)
number of ops: 5
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > ADD ~0 2, 3
1 PRINT ~1 ~0
2 ECHO ~1
3 ECHO '%0A'
3 4 > RETURN 1 branch: # 0; line: 2- 3; sop: 0; eop: 4; out1: -2
path #1: 0,
51
代码
<?php $a=3;
$b=4; if($a=3 || $b=4)
{
$a++;
$b++;
} var_dump($a);
var_dump($b);
结果
[root@dev test]# php -dvld.active=1 get.php
Finding entry points
Branch analysis from position: 0
Jump found. Position 1 = 3, Position 2 = 5
Branch analysis from position: 3
Jump found. Position 1 = 7, Position 2 = 12
Branch analysis from position: 7
Jump found. Position 1 = 12
Branch analysis from position: 12
Jump found. Position 1 = -2
Branch analysis from position: 12
Branch analysis from position: 5
filename: /data/www/www.erongtu.com/test/get.php
function name: (null)
number of ops: 17
compiled vars: !0 = $a, !1 = $b
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
3 0 E > ASSIGN !0, 3
4 1 ASSIGN !1, 4
6 2 > JMPNZ_EX ~2 3, ->5
3 > ASSIGN $3 !1, 4
4 BOOL ~2 $3
5 > ASSIGN $4 !0, ~2
7 6 > JMPZ $4, ->12
8 7 > POST_INC ~5 !0
8 FREE ~5
9 9 POST_INC ~6 !1
10 FREE ~6
10 11 > JMP ->12
12 12 > SEND_VAR !0
13 DO_FCALL 1 'var_dump'
13 14 SEND_VAR !1
15 DO_FCALL 1 'var_dump'
14 16 > RETURN 1 branch: # 0; line: 3- 6; sop: 0; eop: 2; out1: 3; out2: 5
branch: # 3; line: 6- 6; sop: 3; eop: 4; out1: 5
branch: # 5; line: 6- 7; sop: 5; eop: 6; out1: 7; out2: 12
branch: # 7; line: 8- 10; sop: 7; eop: 11; out1: 12
branch: # 12; line: 12- 14; sop: 12; eop: 16; out1: -2
path #1: 0, 3, 5, 7, 12,
path #2: 0, 3, 5, 12,
path #3: 0, 5, 7, 12,
path #4: 0, 5, 12,
bool(true)
int(5)
未完待续……
PHP一些优先级的问题的更多相关文章
- Linux资源管理-IO优先级
前一篇博客介绍了利用 cgroup 来控制进程的 CPU和内存使用情况, 这次补上使用 cgroup 来控制进程的IO优先级的方法. 前提条件 如果想控制进程的IO优先级, 需要内核的支持, 内核编译 ...
- Cocos2dx中线程优先级
Cocos2dx中线程优先级问题 不论是ios还是android,遇到耗时的任务都要另起线程处理,否则程序不能及时用户的反馈.游戏中如果一圈循环不能在1/frameRate(帧率是30则1/30)秒内 ...
- 体验Rabbitmq强大的【优先级队列】之轻松面对现实业务场景
说到队列的话,大家一定不会陌生,但是扯到优先级队列的话,还是有一部分同学是不清楚的,可能是不知道怎么去实现吧,其实呢,,,这东西已 经烂大街了...很简单,用“堆”去实现的,在我们系统中有一个订单催付 ...
- C语言运算符优先级
优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- ...
- CSS优先级
一.CSS代码出现的几个位置 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下:(外部样式)Extern ...
- nginx之location匹配优先级和安全问题
最近一直在做location的配置,遇到优先级别问题(如有配置不当,会存在安全隐患),以下是个人的一些学习体会 一.location 匹配符 1.等于匹配符: ##"=" ...
- C#夯实基础之多线程三:线程的优先级
一.为什么需要优先级--线程调度的问题 在现实生活中,优先级是一个很常见的现象:在火车站,如果你是孕妇,你是可以走进站中的专门绿色通道的,可以提前上火车以免拥挤:火警119匪警110出警的时候,都是人 ...
- js算数优先级
.fullwidth-table { background: white } .fullwidth-table>th { background: #f50 } 优先级 运算类型 关联性 运算符 ...
- css知多少(6)——选择器的优先级
1. 引言 上一节<css知多少(5)——选择器>最后提到,选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明. 上图中,css中的两个选择器都是针对<span>的 ...
- 深入理解this机制系列第二篇——this绑定优先级
前面的话 上一篇介绍过this的绑定规则,那如果在函数的调用位置上同时存在两种以上的绑定规则应该怎么办呢?本文将介绍this绑定的优先级 显式绑定 pk 隐式绑定 显式绑定胜出 function fo ...
随机推荐
- .NET:CLR via C#:Runtime Serialization
Making a Type Serializable The SerializableAttribute custom attribute may be applied to reference ty ...
- MyEclipse中的内置浏览器中的历史记录怎么清除
eclipse内置浏览器的访问记录是存储在对应的工程目录下的.metadata配置中,也就是说你新建一个工程的话就没有了. 如果确实要删除那就找到工作空间中的org.eclipse.ui.browse ...
- list去除重复数据
在java里面要想去除list中的重复数据可以使用两种方式实现: 1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) ...
- tsort - 拓扑排序
tsort - 拓扑排序 本文链接:http://codingstandards.iteye.com/blog/834572 (转载请注明出处) 用途说明 tsort命令通常用于解决一种逻辑问题, ...
- 怎样通过terminal得到AWS EC2 instance的ip
可得到private ip,也是本地的ip.事实上通过ifconfig也能得到: GET http://169.254.169.254/latest/meta-data/local-ipv4 公共ip ...
- 开发winform程序,在拖拽控件大小时,VS会卡死
你可以看看你最近有没有装什么新的软件,比如说:有道词典就会与VS有冲突,导致卡死,可以把进程关闭.
- CSS结构和层叠
每个合法的文档都会生成一个文档树,从而能根据元素的祖先,属性,兄弟元素等创建选择器来选择元素.有了这个结构树,选择器才能起作用,这也是CSS继承的核心.继承是从一个元素向其后代元素传递属性值所采用的机 ...
- Logging with PSR-3 to Improve Reusability
可以用composer的autoload来,导入自己写的类库. composer dump-autoload -o ----------------> 改成 composer update ...
- 简单账本-用完即走的微信小程序
作为一个记账强迫症患者,对当前手机中的记账App都不太满意.这类软件越来越臃肿,越来越慢,启动要半天.联网同步要半天,进入界面又有一堆新功能要介绍.好不容易开始记账,又得各种高大上的选择设定,一笔帐下 ...
- 免费的HTML商业模板-Hidayah
在线演示 在线演示 本地下载 在这款模板中,你可以随意缩放大小,适合笔记本.平板电脑或手机,非常方便阅读.