PHP中点击提交按钮后如何获取携带id的radio单选框name属性值
实现方法
推荐优先使用第一种方案,代码更简洁易维护:
方案1:优化前端name属性,后端直接读取
修改前端表单中radio的name属性,改用数组格式绑定问题ID:
将原代码中所有radio的name="radio_<?= $question['id'] ?>"替换为:
name="answer[<?= $question['id'] ?>]"
后端forms/handle-questions.php直接获取数组即可,不需要额外做字符串解析:
<?php if (isset($_POST['handle_questions'])) { // 直接获取所有问题的回答,数组结构为 问题ID => 用户选择的评分(good/medium/weak) $answerList = $_POST['answer'] ?? []; foreach ($answerList as $questionId => $rating) { // 此处编写将$questionId和$rating存入数据库的逻辑即可 } } ?>
方案2:不修改前端代码,后端解析name属性
如果不想改动现有前端代码,可以在后端遍历POST参数,匹配radio_前缀的字段名提取ID:
<?php if (isset($_POST['handle_questions'])) { $answerList = []; foreach ($_POST as $postKey => $rating) { // 匹配前缀为radio_的参数 if (strpos($postKey, 'radio_') === 0) { // 截取前缀后的部分得到问题ID $questionId = substr($postKey, 6); $answerList[$questionId] = $rating; } } // 遍历$answerList即可得到所有问题的回答数据 } ?>
如果你的PHP版本 >= 8.0,也可以用str_starts_with($postKey, 'radio_')替代strpos判断,可读性更好。
内容的提问来源于stack exchange,提问作者Moamen Ali
相关产品推荐
相关产品推荐

