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

为什么PHP中foreach遍历数组修改值不生效,添加引用指针后才正常?

PHP foreach遍历修改数组元素失效的原因

核心原因

  • PHP的foreach遍历默认采用值拷贝模式:遍历过程中拿到的$city是原数组对应位置元素的独立副本,和原数组没有关联。你对$city做的新增字段、修改值等操作,全部作用在临时副本上,遍历结束后副本就会被销毁,自然不会反映到原$data数组里。
  • 加上&引用符号后,$city就变成了指向原数组对应元素的指针,此时对$city的所有修改都会直接写入原数组的对应位置,修改自然就能生效。

额外注意点

引用遍历结束后建议手动执行unset($city);销毁引用变量。因为遍历结束后$city仍然会指向原数组的最后一个元素,如果后续你无意中修改了$city的值,会直接篡改原数组的最后一项,这是PHP引用遍历非常常见的隐式坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:15:03