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

PHP中根据复选框选择结果输出不同内容的实现问题

解决第二个测验的结果判断问题

前提:确保所有页面开启会话

所有涉及$_SESSION的PHP文件(包括测验提交页和结果页),必须在代码最开头添加:

session_start();

没有这行代码,会话数据无法读取或存储。


1. 确认表单与答案存储逻辑

首先检查第二个测验的HTML表单,复选框的name必须设置为数组格式(比如quiz2[]),这样多选的选项才会以数组形式提交:

<!-- 第二个测验的表单示例 -->
<form action="quiz_3.php" method="post">
    <p>请选择正确选项(可多选):</p>
    <label><input type="checkbox" name="quiz2[]" value="opt1"> 选项1</label><br>
    <label><input type="checkbox" name="quiz2[]" value="opt2"> 选项2(正确)</label><br>
    <label><input type="checkbox" name="quiz2[]" value="opt3"> 选项3(正确)</label><br>
    <label><input type="checkbox" name="quiz2[]" value="opt4"> 选项4</label><br>
    <button type="submit">提交测验</button>
</form>

然后在quiz_3.php中,正确存储用户的选择:

session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 若用户未选任何选项,存储空数组而非未定义值
    $_SESSION['quiz2_answers'] = $_POST['quiz2'] ?? [];
}

2. 结果页的判断逻辑

在最终的结果汇总页面,用以下代码实现精准判断:

session_start();

// 替换为你实际的正确选项值
$correct_options = ['opt2', 'opt3'];
// 获取存储的答案,默认空数组避免未定义错误
$user_answers = $_SESSION['quiz2_answers'] ?? [];
$answer_count = count($user_answers);
$result = '';

// 按规则判断结果
if ($answer_count === 0) {
    $result = 'You did not select any option';
} elseif ($answer_count === 1) {
    $result = 'Answer is incomplete';
} elseif ($answer_count === 2) {
    // 对比用户选项与正确选项,不考虑选择顺序
    $wrong_selections = array_diff($user_answers, $correct_options);
    $missing_correct = array_diff($correct_options, $user_answers);
    if (empty($wrong_selections) && empty($missing_correct)) {
        $result = 'Correct';
    } else {
        $result = 'One of the two answers is wrong';
    }
}

// 输出结果
echo "<h3>第二个测验结果</h3>";
echo "<p>$result</p>";

常见问题排查

  • 之前用isset判断失败:因为如果用户未选任何选项,$_POST['quiz2']不会存在,若没做处理,$_SESSION['quiz2_answers']可能未定义,直接用isset只能判断是否存在,无法区分空数组和未定义,用?? []空合并运算符可以统一处理为数组。
  • 用foreach遍历无反应:如果用户未选选项,$user_answers是空数组,foreach不会执行,所以必须先判断数组长度,再做后续逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:50:28