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

Laravel测验应用如何在对应问题后仅展示该题正确答案

问题解决方案

问题根因

你在每道题的遍历循环内嵌套遍历了所有正确答案和用户答案集合,没有将判断逻辑和当前正在渲染的题目做绑定,导致每道题下方都会输出所有题目的校验结果。同时你使用题目内容作为提交数组的索引,存在内容重复时索引冲突的隐患。

改造步骤

1. 优化索引规则(视图表单部分)

将提交的答案数组索引统一改为题目ID,保证唯一对应,替换原有使用题目内容作为索引的逻辑,同时修复label标签关联错误的问题:

<input type="radio" name="answer[{{$answer->id}}]" value="{{$answer->a}}" id="radio_{{$answer->id}}_a" >(A) : 
<label class="form-check-label" for="radio_{{$answer->id}}_a">{{$answer->a}}</label><br>
<input type="radio" name="answer[{{$answer->id}}]" value="{{$answer->b}}" id="radio_{{$answer->id}}_b" >(B) : 
<label class="form-check-label" for="radio_{{$answer->id}}_b">{{$answer->b}}</label><br>
<input type="radio" name="answer[{{$answer->id}}]" value="{{$answer->c}}" id="radio_{{$answer->id}}_c" >(C) : 
<label class="form-check-label" for="radio_{{$answer->id}}_c">{{$answer->c}}</label><br>
<input type="radio" name="answer[{{$answer->id}}]" value="{{$answer->d}}" id="radio_{{$answer->id}}_d" >(D) : 
<label class="form-check-label" for="radio_{{$answer->id}}_d">{{$answer->d}}</label><br>
<input type="hidden" name="ans[{{$answer->id}}]" value="{{$answer->ans}}">

2. 替换结果校验逻辑(视图部分)

删除原来嵌套遍历所有答案的代码,直接通过当前题目的ID取出对应答案做判断,放在每道题的循环内即可:

@if(isset($answers))
    @php
        $currentQid = $answer->id;
        // 取出当前题的用户选择和正确答案
        $userChoose = $answers[$currentQid] ?? null;
        $correctAns = $ans[$currentQid] ?? null;
    @endphp
    @if($userChoose == $correctAns)
        <h6 style="color:green">回答正确</h6>
    @else
        <h6 style="color:red">正确答案:{{$correctAns}}</h6>
    @endif
@endif

3. 可选优化项

  • 控制器内的$users变量实际存储的是题目数据,建议重命名为$questions提升代码可读性
  • 表单提交方式改为POST,避免答案参数暴露在URL中,对应修改路由定义为Route::post('/startQ',[QuestionController::class,'startQ']);

内容的提问来源于stack exchange,提问作者M Farhan Shaukat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:57:03