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

PHP中调用第二个函数修改第一个函数内数组不生效的原因是什么?

问题根因

PHP 数组参数默认采用值传递模式:调用second函数时传入的是$results数组的副本,所有对$arr的修改仅作用于副本,不会影响first函数内的原始数组,因此你在first中打印的还是未修改的原始值。

解决方案

有两种常用修复方式:

方案1:使用引用传参

在second函数的$arr参数前添加取地址符&,改为引用传递,函数内部操作的就是原始数组本身,无需修改其他调用逻辑:

function second($type, &$arr){ // 仅此处新增&符号
    $type .= 's';
    if(array_key_exists($type,$arr)){
        array_push($arr[$type],'title');
    }
    print_r($arr);
}

方案2:返回修改后的数组

如果不想使用引用,可以让second函数返回处理后的数组,在first中接收返回值覆盖原有变量即可:
修改后的second函数:

function second($type,$arr){
    $type .= 's';
    if(array_key_exists($type,$arr)){
        array_push($arr[$type],'title');
    }
    print_r($arr);
    return $arr; // 新增返回逻辑
}

修改first函数中的调用逻辑:

$results = second('program', $results); // 接收返回值覆盖原变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:06:03