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

PHP函数中值传递与引用传递疑问:嵌套调用为何未修改原数组?

PHP引用传递问题解析

先看你代码的运行结果:

changed Lily

为什么arr2的"a"键值没改变?

  • 函数f1的参数&$array_param是引用传递:调用时传入的变量会直接被函数操作,不会创建副本。所以直接调用f1($arr1)时,$arr1本身被修改,"a"的值变成"changed"。
  • 但函数f2的参数$array_param是值传递:调用f2($arr2)时,PHP会复制一份$arr2的内容,赋值给f2内部的$array_param变量。此时在f2里调用f1($array_param),f1操作的是f2内部的这个副本,而不是外部的$arr2。所以修改只会作用在副本上,原$arr2完全不受影响。

关于引用传递调用的疑问

函数声明时参数带&,调用时不能选择传值或引用,必须传递一个可修改的变量(不能是字面量、表达式结果),而且强制是引用传递。比如尝试f1(["a" => "test"])会直接报错,因为引用传递要求传入的是变量,而非临时值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:09:26