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

PHP代码中$run1与$run2变量的作用及使用逻辑问询

问题解答

$run1和$run2属于完全冗余的无效变量,和引用赋值逻辑没有任何关联,删除这两行赋值代码不会对最终运行结果产生任何影响。

逻辑拆解

  • 先看f1函数的特性:
    1. 参数为引用传参(前缀带&),调用时传入的原数组会被直接修改,不需要依赖返回值回传修改结果
    2. 函数内部没有定义return语句,默认返回值为null
  • 再看f2函数的特性:
    1. 参数为普通值传递,调用时会传入外部数组的拷贝,函数内部对参数的修改不会影响外部原数组
    2. 内部调用f1拿到的返回值是null,最终f2的返回值也为null

你提到的echo语句完全没有用到$run1和$run2,这两个变量只是接收了两个函数返回的null值,没有参与任何后续逻辑,所以没有实际作用。

额外提醒:你贴出的f1函数存在参数名拼写错误,形参声明的是$array_para,但函数内部使用的是$array_param,如果按这段代码原样运行,$arr1不会被修改。应该是输入手误,把形参写成&$array_param才符合你描述的逻辑。

运行结果说明

修正上述笔误后,就算删掉$run1 = f1($arr1);和$run2 = f2($arr2);这两行,最终echo的输出依然是changed Lily,原因如下:

  • 调用f1($arr1)时因为是引用传参,直接修改了外部$arr1的内容,所以$arr1["a"]变为changed
  • 调用f2($arr2)时是值传递,f2内部修改的只是传入的数组拷贝,不会影响外部$arr2,所以$arr2["a"]保持原有的Lily

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:15:02