PHP一些优先级的问题

时间:2022-08-19 10:16:18

直接看代码

<?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一些优先级的问题的更多相关文章

  1. Linux资源管理-IO优先级

    前一篇博客介绍了利用 cgroup 来控制进程的 CPU和内存使用情况, 这次补上使用 cgroup 来控制进程的IO优先级的方法. 前提条件 如果想控制进程的IO优先级, 需要内核的支持, 内核编译 ...

  2. Cocos2dx中线程优先级

    Cocos2dx中线程优先级问题 不论是ios还是android,遇到耗时的任务都要另起线程处理,否则程序不能及时用户的反馈.游戏中如果一圈循环不能在1/frameRate(帧率是30则1/30)秒内 ...

  3. 体验Rabbitmq强大的【优先级队列】之轻松面对现实业务场景

    说到队列的话,大家一定不会陌生,但是扯到优先级队列的话,还是有一部分同学是不清楚的,可能是不知道怎么去实现吧,其实呢,,,这东西已 经烂大街了...很简单,用“堆”去实现的,在我们系统中有一个订单催付 ...

  4. C语言运算符优先级

    优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- ...

  5. CSS优先级

    一.CSS代码出现的几个位置 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下:(外部样式)Extern ...

  6. nginx之location匹配优先级和安全问题

    最近一直在做location的配置,遇到优先级别问题(如有配置不当,会存在安全隐患),以下是个人的一些学习体会 一.location 匹配符 1.等于匹配符:      ##"=" ...

  7. C&num;夯实基础之多线程三&colon;线程的优先级

    一.为什么需要优先级--线程调度的问题 在现实生活中,优先级是一个很常见的现象:在火车站,如果你是孕妇,你是可以走进站中的专门绿色通道的,可以提前上火车以免拥挤:火警119匪警110出警的时候,都是人 ...

  8. js算数优先级

    .fullwidth-table { background: white } .fullwidth-table>th { background: #f50 } 优先级 运算类型 关联性 运算符 ...

  9. css知多少(6)——选择器的优先级

    1. 引言 上一节<css知多少(5)——选择器>最后提到,选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明. 上图中,css中的两个选择器都是针对<span>的 ...

  10. 深入理解this机制系列第二篇——this绑定优先级

    前面的话 上一篇介绍过this的绑定规则,那如果在函数的调用位置上同时存在两种以上的绑定规则应该怎么办呢?本文将介绍this绑定的优先级 显式绑定 pk 隐式绑定 显式绑定胜出 function fo ...

随机推荐

  1. 前台获取Dropdownlist选中的text

    $("#ddltest").find("option:selected").text()

  2. 用TypeScript开发了一个网页游戏引擎,开放源代码

    最开始学习电脑编程的原动力之一就是想自己编写游戏,一方面很好奇这些游戏是怎么做出来的,另一方面觉得有些地方设计的不合理,希望电脑游戏既能让人玩的有趣,又不浪费时间. 学校五年,毕业十年,学用了十多种编 ...

  3. 封装一些数据库SQLCipher的方法(增、删、改、查)

    上一篇随笔只是简单的说了一下使用SQLCipher框架,介绍的比较笼统,可能看一遍之后更加蒙圈了,为了更好的使用这个数据库,整理了我在公司项目的需要用的方法,包括创建表,插入数据,更新数据,搜索查询数 ...

  4. Android高斯模糊技术,实现毛玻璃效果(转)

    本博客转自郭霖公众号:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235930&idx=1&sn=e328 ...

  5. GeoServer&plus;PostgreSQL&plus;PostGIS&plus;pgRouting实现最短路径查询

    一.软件安装 GeoServer下载地址: http://geoserver.org/download/ PostgreSQL下载地址: https://www.postgresql.org/down ...

  6. google软件测试之道读后感(一)

    这几天在抽空读一本新书,久负盛名的<google软件测试之道>.之前在网络上一点一点地看过它的英文版,很受触动,还做了很长的读书笔记,现在看到了中文版,才恍觉之前的好些理解存在不恰当的地方 ...

  7. bzoj&colon;1584&colon; &lbrack;Usaco2009 Mar&rsqb;Cleaning Up 打扫卫生

    Description 有N头奶牛,每头那牛都有一个标号Pi,1 <= Pi <= M <= N <= 40000.现在Farmer John要把这些奶牛分成若干段,定义每段的 ...

  8. 使用node&period;js 脚手架搭建Vue项目

    1.安装node.js https://nodejs.org/zh-cn/ 下载安装node.js 在命令行测试 node -v 输出版本号说明安装成功 2.使用npm更新安装cpnm npm ins ...

  9. 浅析PHP中的闭包和匿名函数

    PHP闭包和匿名函数使用的句法与普通函数相同,但闭包和匿名函数其实是伪装成函数的对象(Closure类的实例) .下面给大家介绍PHP中的闭包和匿名函数知识,需要的朋友参考下吧   闭包是指在创建时封 ...

  10. vue 实站技巧总结

    多个页面都使用的到方法,放在 vue.prototype上会很方便 刚接触 vue的时候做过一件傻事,因为封装了一个异步请求接口post,放在 post.js文件里面,然后在每个需要使用异步请求的页面 ...