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

CodeIgniter中数组无法动态添加值问题:跨函数赋值失效排查

问题分析与解决方案

你遇到的核心问题是PHP数组的默认传递机制——PHP中数组默认是「值传递」,也就是说你把$ChnCat_tags传给second_function时,函数拿到的只是原数组的一个副本,你在函数里对数组的修改只会作用于这个副本,根本不会影响到类成员变量里的原数组。而且就算函数返回了修改后的副本,你在first_function里也没把返回值赋值给原变量,等于白忙活了。

接下来给你两种可行的解决方案,选哪种都能解决问题:

方案1:使用引用传递修改原数组

在函数参数前加&符号,让函数直接操作原数组的引用,这样修改就会同步到原变量上:

public $ChnCat_tags = array();

function first_function() {
    // 你的业务代码
    $this->ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );
    
    // 传递数组的引用给second_function
    $this->second_function($this->ChnCat_tags);
    
    return $this->ChnCat_tags; // 现在会包含两个函数添加的所有值
}

// 参数前的&表示接收数组的引用
function second_function(&$ChnCat_tags) {
    // 你的业务代码
    $ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );
    
    // 递归调用也要传递引用,记得加终止条件!
    if(/* 这里加你的递归终止条件,比如没有子节点了 */) {
        return;
    }
    $this->second_function($ChnCat_tags);
}

方案2:直接操作类成员变量(更推荐)

既然$ChnCat_tags是类的公共属性,完全没必要把它当参数传来传去,直接在两个函数里用$this->ChnCat_tags操作同一个数组就行,这也是CodeIgniter类中共享状态的规范写法:

public $ChnCat_tags = array();

function first_function() {
    // 你的业务代码
    $this->ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );
    
    $this->second_function();
    
    return $this->ChnCat_tags;
}

function second_function() {
    // 你的业务代码
    $this->ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );
    
    // 一定要加递归终止条件,避免无限递归!
    if(/* 比如:当前节点没有子分类了 */) {
        return;
    }
    $this->second_function();
}

额外提醒

别忘记给递归函数加上终止条件!你原代码里完全没写判断逻辑,这样会导致无限递归,触发PHP的递归深度限制错误,这点一定要注意。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:18:52