You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中$val['id'] = $val['id']++与+1、单独++结果不同原因求解

问题原因分析

核心是PHP后置递增运算符的运算逻辑特性

PHP中**后置++**的执行顺序规则是:

  • 第一步:先返回变量的当前原始值作为整个表达式的结果
  • 第二步:再对变量本身执行+1操作

你写$val['id'] = $val['id']++时,完整执行流程如下(以$val['id']初始值为0举例):

  1. 计算等号右侧的$val['id']++表达式:先返回原始值0,然后将$val['id']的值更新为1
  2. 执行赋值操作:把右侧表达式返回的0重新赋值给$val['id'],直接覆盖了上一步刚更新的1
  3. 最终$val['id']的值仍然是初始的0,没有实现+1效果

而另外两种写法都能正常实现+1:

  • 单独写$val['id']++:没有多余的赋值操作,第二步+1后的结果会直接保留
  • 写$val['id'] = $val['id'] + 1:先计算$val['id'] +1得到新值,再把新值赋值回去,不存在旧值覆盖的问题

你可以用极简代码验证这个逻辑:

$a = 0;
$a = $a++;
var_dump($a); // 输出 int(0)

这个结果和你是否使用foreach的引用遍历没有关系,是后置++本身的运算规则决定的。

内容的提问来源于stack exchange,提问作者user6228017

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:45:03