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

Laravel控制器中对比表单数组值设置ANSWER_STATUS字段

解决方案

修改后的控制器代码

public function Store_Answer(Request $request)
{
    $questions = $request->Question;
    $correctAnswers = $request->ANSWER;
    $studentAnswers = $request->OPTION;

    if ($questions && is_array($correctAnswers) && is_array($studentAnswers)) {
        foreach ($questions as $index => $question) {
            // 对比对应位置的答案,相等设为1,否则0
            $status = (isset($correctAnswers[$index]) && isset($studentAnswers[$index]) 
                && $correctAnswers[$index] === $studentAnswers[$index]) ? 1 : 0;

            $data = new OnlineExminAnswer();
            $data->ANSWER_STATUS = $status;
            $data->question = $question;
            $data->answer = $studentAnswers[$index] ?? null; // 处理学生答案不存在的异常情况
            $data->save();
        }
    }
}

关键逻辑说明

  • 将请求中的数组变量单独取出,提升代码可读性
  • 增加数组合法性判断,避免因数组不存在或非数组类型导致运行报错
  • 使用foreach遍历题目数组,通过循环索引$index匹配对应位置的正确答案与学生答案
  • 用三元运算符简化判断逻辑:当对应位置的正确答案和学生答案都存在且严格相等时,ANSWER_STATUS设为1,否则设为0
  • 处理学生答案可能不存在的边界情况,用?? null避免索引越界报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:50:14