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

基于PHP关联数组实现分组筛选及挂科人员展示表单开发需求

实现带分组选择与挂科人员筛选的表单(结合PHP学生数据)

嘿,我来帮你搞定这个表单需求!结合你给出的$NotesGroupe1数组,我会提供一套从前端表单到后端数据处理的完整实现方案。

一、前端表单实现

首先是用户交互的表单部分,我们需要两个核心控件:

  • 多选下拉框:支持选择group1、group2或同时选中两者
  • 复选框:控制是否只显示挂科人员
<form method="POST" action="">
    <div>
        <label for="group-select">选择分组:</label>
        <select id="group-select" name="groups[]" multiple size="3">
            <option value="group1">Group 1</option>
            <option value="group2">Group 2</option>
        </select>
        <p>提示:按住Ctrl键可多选</p>
    </div>

    <div style="margin: 15px 0;">
        <label>
            <input type="checkbox" name="show-failed" value="1">
            仅显示分组中挂科的人员
        </label>
    </div>

    <button type="submit">提交筛选</button>
</form>

二、PHP后端数据处理逻辑

接下来是后端的核心逻辑:接收表单参数,根据条件过滤你提供的学生数据。这里我补充一个$NotesGroupe2的示例数组(方便演示多选场景),同时定义挂科判定规则:学生三门科目平均分低于70分视为挂科。

<?php
// 你提供的Group1数据
$NotesGroupe1 = array(
    "HARG200181" => array("Guillaume", "Harvey", "M", 36, 90, 70, 76),
    "CHAM010283" => array("Marc-André", "Charpentier", "M", 34, 80, 73, 96),
    "TREV290991" => array("Valérie", "Tremblay", "F", 26, 70, 71, 69),
    "PELL180584" => array("Laurence", "Pelletier", "F", 31, 65, 62, 67) // 补充完整数据,模拟挂科
);

// 示例Group2数据
$NotesGroupe2 = array(
    "ROBE120390" => array("Robert", "Boucher", "M", 28, 85, 78, 82),
    "LAVO050787" => array("Sophie", "Lavoie", "F", 33, 60, 63, 61), // 挂科
    "MART190489" => array("Jean", "Martin", "M", 29, 75, 77, 72)
);

// 初始化合并数据数组
$filteredStudents = array();

// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 获取选中的分组
    $selectedGroups = isset($_POST['groups']) ? $_POST['groups'] : array();
    // 获取是否显示挂科人员的开关
    $showFailed = isset($_POST['show-failed']);

    // 合并选中分组的数据
    foreach ($selectedGroups as $group) {
        if ($group === 'group1' && !empty($NotesGroupe1)) {
            $filteredStudents = array_merge($filteredStudents, $NotesGroupe1);
        }
        if ($group === 'group2' && !empty($NotesGroupe2)) {
            $filteredStudents = array_merge($filteredStudents, $NotesGroupe2);
        }
    }

    // 如果开启挂科筛选,过滤出挂科学生
    if ($showFailed && !empty($filteredStudents)) {
        $failedStudents = array();
        foreach ($filteredStudents as $studentId => $studentData) {
            // 计算平均分:取数组中第4、5、6位(索引4、5、6)的分数求平均
            $scores = array_slice($studentData, 4, 3);
            $average = array_sum($scores) / count($scores);
            
            // 平均分低于70视为挂科
            if ($average < 70) {
                $failedStudents[$studentId] = $studentData;
            }
        }
        $filteredStudents = $failedStudents;
    }

    // 展示筛选结果
    if (!empty($filteredStudents)) {
        echo "<h3>筛选结果:</h3>";
        echo "<ul>";
        foreach ($filteredStudents as $studentId => $data) {
            list($firstName, $lastName, $gender, $age, $score1, $score2, $score3) = $data;
            $average = round(($score1 + $score2 + $score3) / 3, 1);
            echo "<li>ID: {$studentId} | {$firstName} {$lastName} | 平均分: {$average}</li>";
        }
        echo "</ul>";
    } else {
        echo "<p>没有符合条件的学生数据</p>";
    }
}
?>

三、完整整合说明

把上面的HTML表单和PHP代码放在同一个.php文件中即可运行:

  1. 用户选择分组和筛选条件,点击提交
  2. 后端自动合并选中分组的学生数据
  3. 根据复选框状态过滤挂科人员
  4. 最终展示符合条件的学生列表

你可以根据实际需求调整挂科判定规则(比如改成单门科目低于60分),或者补充更多分组的数据~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:52:29