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

CodeIgniter 4生成键值对数组问题:仅返回最后一条数据

问题分析与解决办法

你的函数只返回最后一条数据,核心原因是**foreach循环里每次都用新数组覆盖了原有的$array**,而非往数组中添加新元素。每次执行$array = array($vendor['id'] => $vendor['vendor'])时,之前的数组内容都会被清空,最终只剩下最后一次循环的结果。

修正后的代码

public function get_vendors() {
    $vendors = $this->db->table('vendor')->get()->getResultArray();
    // 初始化包含默认选项的数组
    $array = array(
        0 => 'Not Assigned'
    );
     
    if (!empty($vendors)) {
        foreach ($vendors as $vendor) {
            // 往数组中添加新的键值对,而非覆盖整个数组
            $array[$vendor['id']] = $vendor['vendor'];
        }
    }
    
    return $array;
}

更简洁的写法(可选)

你可以用array_column函数直接提取键值对数组,再和默认选项合并,代码更精简:

public function get_vendors() {
    $vendors = $this->db->table('vendor')->get()->getResultArray();
    // 合并默认选项与数据库提取的键值对数组
    return array_merge(
        array(0 => 'Not Assigned'),
        array_column($vendors, 'vendor', 'id')
    );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:36:43