本文通过VLD工具分析php的opcode,来解释原因,先贴图
<?php $i = 1; $i+$i++;
number of ops: 5 compiled vars: !0 = $i line # * op fetch ext return operands --------------------------------------------------------------------------------- 2 0 > ASSIGN !0, 1 3 1 POST_INC ~1 !0 2 ADD ~2 !0, ~1 3 FREE ~2 4 4 > RETURN 1 branch: # 0; line: 2- 4; sop: 0; eop: 4 path #1: 0,
$i = 1; $i+$i+$i++
number of ops: 6 compiled vars: !0 = $i line # * op fetch ext return operands --------------------------------------------------------------------------------- 2 0 > ASSIGN !0, 1 3 1 ADD ~1 !0, !0 2 POST_INC ~2 !0 3 ADD ~3 ~1, ~2 4 FREE ~3 4 5 > RETURN 1 branch: # 0; line: 2- 4; sop: 0; eop: 5 path #1: 0,
我们对比2,4这两张图,可以知道为什么结果会让你意外
先分析1,2的执行结果
首先$i赋值为1,$i++自增,将本身结果1复制给临时变量~1($i),然后$i自增为2,也就是!0=2,当然最后结果~2 = ~1+!0 ===3;
再来分析3,4
首先$i赋值为1,然后$i+$i = !0+!0 == ~1 == 2,接着$i++自增,将本身结果1复制给临时变量~2($i),最后结果~1+~2 == 2+1 ===3;
eof
相关推荐
PHP 中 i++ 和 ++i 的区分及效率浅析 PHP 中的 i++ 和 ++i 都是递增运算符,但它们的执行顺序和返回值不同。 i++ 运算符 i++ 运算符是后缀递增运算符,它的执行顺序如下: 1. 返回当前变量的值 2. 将变量的值加 ...
根据给定文件的信息,我们可以详细地探讨三种不同的排序算法:冒泡排序(Bubble Sort)、快速排序(Quick Sort)以及堆排序(Heap Sort),并重点分析它们在PHP中的具体实现方式。 ### 一、冒泡排序 冒泡排序是一...
在编程领域,排序算法是计算机科学的基础之一,尤其是在数据处理和算法分析中至关重要。本话题主要探讨了三种经典的排序算法——冒泡排序、快速排序和选择排序的PHP实现。这三种算法各有优缺点,适用于不同的场景,...
在PHP编程语言中,排序是数据处理中一个非常重要的功能,它可以帮助我们组织、管理和分析数据。本篇文章将深入探讨几种常见的PHP排序方法,包括冒泡排序、快速排序、插入排序和选择排序,通过理解这些算法的工作原理...
在结果输出阶段,我们可以使用 PHP 代码将结果输出到浏览器上,以便于用户查看和分析结果。 设备平行分配问题的 PHP 代码可以分为三个部分:数据接收部分、数据处理部分和结果输出部分。在数据接收部分,我们可以...
在本文中,我们将深入探讨如何使用PHP编程语言实现三种特殊的矩阵类型:蛇形矩阵、回环矩阵和数字螺旋矩阵。这些矩阵的共同特点是它们的元素按照特定的顺序排列,每一种都有其独特的填充规则。 首先,让我们从蛇形...
PHP选择排序法实现数组排序实例分析 PHP 选择排序法是常用的数组排序算法之一,它通过比较数组中的元素,选择合适的元素进行交换,直到整个数组排序完成。在 PHP 中实现选择排序法可以使用以下步骤: 1. 首先,...
通过分析提供的压缩包文件(如`calendarix_1_8_20081228_trial`),我们可以深入了解这个日历的具体实现和可能的扩展功能。 总之,PHP的简单日历实现涉及日期处理、二维数组操作以及HTML和CSS的生成。这个项目为...
### PHP+MySQL 分页显示示例分析 #### 一、分页显示原理及应用场景 在Web开发中,当数据量较大时,一次性加载所有数据到前端不仅会增加服务器的负担,还会导致页面加载时间过长,用户体验差。因此,采用分页技术...
在编程领域,排列组合算法是解决许多问题的关键,特别是在数据处理、数据分析以及各种优化问题中。PHP作为一种流行的服务器端脚本语言,虽然不是为高性能计算而设计,但其丰富的库和简洁的语法使得实现这些算法变得...
这个类提供了灵活的方法来处理不同的向量,并计算它们与基准向量的余弦相似度,从而在PHP环境中进行数据分析和比较。在实际项目中,你可能需要进一步优化性能,例如使用更高效的算法或数据结构来存储和计算向量。...
在本压缩包“php-leetcode题解之二维数组回形排序打印.zip”中,主要包含的是使用PHP语言解决LeetCode算法问题的相关代码和解析,特别是关于二维数组的回形顺序打印。LeetCode是一个在线的编程练习平台,它提供了...
通过分析和理解这个问题及解决方案,不仅可以提升PHP编程技能,还能增强对动态规划算法的理解,这对于解决其他类似的计算机科学问题非常有帮助。这个压缩包中的内容,无论是对于初学者还是有经验的开发者,都是一个...
虽然通常在PHP中进行大量数组运算从一定程度上反应程序设计上可能存在问题,但是粗略的估计数组占用的内存是很有必要的。 首先感觉一下1000个元素的整数数组占有的内存: 复制代码 代码如下: echo memory_get_usage()...
本文实例分析了PHP内置的Math函数效率问题。分享给大家供大家参考。具体分析如下: 如题所示,对于没有做过大规模运算的朋友来说,可能还不知道,PHP的Math函数运算原来是如此之慢的,大家还是麻烦点,手写多几句,代码...
在IT行业中,经常需要将数据库中的数据导出到其他格式,以便进行数据分析、报表生成或者数据备份。在本示例中,我们将详细讨论如何使用PHP语言将MySQL数据表转换为Excel文件格式。这个过程通常涉及从数据库获取数据...
### PHP用户登录之Cookie信息安全分析 #### 一、引言 在Web开发中,用户登录认证是非常关键的一个环节。为了保持用户的登录状态,通常会在用户的浏览器中存储一些信息,最常用的方式之一就是使用Cookie。然而,...
首先,我们需要引入PHP的内置日期函数`date()`,它能够返回与当前时间或指定时间相关的字符串。在本例中,我们要获取当前日期并依次增加一天,直到输出九天后的日期。这通常涉及到`date()`函数和`strtotime()`函数的...
在编程领域,LeetCode是一个非常受欢迎的在线平台,它提供了大量的编程题目,旨在帮助开发者提升算法和数据...此外,可能还包含了对各种情况的测试用例,以及对复杂度分析的讨论,有助于深入理解这个问题的解决方案。
下面将对每个问题进行详细的解释和分析: 一、基础题 1. 写出如下程序的输出结果 $str1 = null; $str2 = false; echo $str1==$str2 ? '相等' : '不相等'; $str3 = ''; $str4 = 0; echo $str3==$str4 ? '相等' : ...