CodeIgniter中使用update_batch时如何在数组内实现多条件判断?
批量更新学生成绩时的多条件赋值解决方案
针对批量更新中equiv字段的多条件需求,替换原三元运算符并避免错误赋值的修改方案如下:
修改后的代码
public function updateAll(){ $data = $this->input->post(); $batch = []; for($i = 0; $i < count($data['studentID']); $i++){ $grade = $data['grade'][$i]; $updateData = [ 'studentID' => $data['studentID'][$i], 'grade' => $grade ]; // 多条件判断设置equiv值 if($grade == 65){ $updateData['equiv'] = 5; } elseif($grade == 70){ // 可根据实际需求添加更多else if分支 $updateData['equiv'] = 6; } elseif($grade == 80){ $updateData['equiv'] = 8; } // 不满足任何条件时,不添加equiv字段,避免覆盖原有值 $batch[] = $updateData; } return $this->db->update_batch('tbl_college_grades', $batch, 'studentID'); }
关键修改点
- 用
if-elseif结构替代三元运算符,支持任意数量的条件分支,逻辑更清晰 - 仅当满足对应条件时,才将
equiv字段加入更新数组;不满足条件时不包含该字段,这样update_batch不会修改原有equiv值,彻底避免错误设为0的问题 - 代码结构更易维护,后续新增条件只需添加新的
elseif分支即可
内容的提问来源于stack exchange,提问作者Coder Codes
相关产品推荐
相关产品推荐

