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 ...
随机推荐
- python接口自动化24-有token的接口项目使用unittest框架设计
获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...
- MySQL Workbench update语句错误Error Code: 1175.
rom:http://www.tuicool.com/articles/NJ3QRz MySQL update error: Error Code: 1175. You are using safe ...
- springboot 启动类CommandLineRunner(转载)
在Spring boot项目的实际开发中,我们有时需要项目服务启动时加载一些数据或预先完成某些动作.为了解决这样的问题,Spring boot 为我们提供了一个方法:通过实现接口 CommandLin ...
- Matlab制作个人主页
Matlab代码编辑器具有代码发布功能,如下图,当编辑好代码后,点击Publish按钮可以发布html网页格式的代码使用说明. 从上面的图中可以看到,发布功能可以控制字体(黑体.斜体.等 ...
- WebViewClient 简介 API 案例
代码位置:https://github.com/baiqiantao/WebViewTest.git 设计思想理解 在WebView的设计中,不是什么事都要WebView类干的,有相当多的杂事是分给其 ...
- Strategy 策略模式 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 13个可实现超棒数据可视化效果的Javascript框架
随着商业及其相关需求的发展,数据成为越来越重要的元素之一,为了更加直观和明显的展示商业潜在的趋势和内在的特性,我们需要使用图表和图形的方式来直观动态的展示数据内在秘密,在今天的这篇文章中我们推荐12款 ...
- [置顶] Android异步加载数据库和多线程编程
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名称,中国大陆地区较多人使用“安卓” ...
- Linux内核设计基础(四)之虚拟文件系统
先来看一下写文件函数write的运行过程: ret = write(fd, buf, len); write适用于各种文件系统.它首先运行sys_write(),而正是这个sys_write()进行实 ...
- iOS 获取流量
#include <arpa/inet.h> #include <net/if.h> #include <ifaddrs.h> #include <net/i ...