You need to enable JavaScript to run this app. 如何在Naravel中统计测验正确作答数并逐题校验答案正确性
优惠活动
大模型
产品
解决方案
定价
更多

如何在Naravel中统计测验正确作答数并逐题校验答案正确性

测验作答校验与统计实现方案

你贴的原始示例代码存在PHP语法问题,数组元素的分隔符需使用逗号而非分号,直接运行会触发解析错误,修正后的基础数组初始化写法如下:

// 从数据库获取的正确答案
$correct_answer = [
    1 => 'A',
    2 => 'B'
];
// 用户提交的作答
$user_answer = [
    1 => 'B',
    2 => 'B'
];

逐题校验逻辑

遍历标准答案的题目ID,逐题对比用户提交的选项,同时兼容漏答的边界场景,最终输出结构化的逐题校验结果方便前端渲染:

  • 校验时优先判断用户是否提交了对应题目的作答,未提交直接判定为错误
  • 逐题比对时使用严格相等判断===,避免类型隐式转换带来的判定误差
  • 遍历过程中同步累计答对的题目数量,无需额外二次遍历计算
$question_check_result = [];
$correct_count = 0;

foreach ($correct_answer as $question_id => $right_option) {
    // 处理漏答场景
    if (!isset($user_answer[$question_id])) {
        $question_check_result[$question_id] = [
            'is_correct' => false,
            'user_choice' => '未作答',
            'right_choice' => $right_option
        ];
        continue;
    }
    $user_choice = $user_answer[$question_id];
    $is_correct = $user_choice === $right_option;
    // 累计正确数
    if ($is_correct) {
        $correct_count++;
    }
    $question_check_result[$question_id] = [
        'is_correct' => $is_correct,
        'user_choice' => $user_choice,
        'right_choice' => $right_option
    ];
}

拿到$question_check_result数组后,前端只需要循环渲染,对is_correct为true的项标注对勾、为false的项高亮显示正确答案即可。

正确率统计

基于遍历过程中累计的$correct_count,直接计算正确数和占比即可,同时增加总题数为0的边界判断避免除以零错误:

$total_question = count($correct_answer);
// 计算百分比,保留2位小数
$accuracy_rate = $total_question > 0 ? round(($correct_count / $total_question) * 100, 2) : 0;

按照你给的示例数据,最终计算结果为:

  • 正确作答数:1
  • 总题数:2
  • 正确率:50%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 06:54:07