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
相关产品推荐
相关产品推荐

