在我的表单中,我生成了x
组单选按钮:
for ( $j = 0; $j < $x; $j++ ) {
<input type="radio" name="gender<?php echo $x; ?>" value="male" />Male
<input type="radio" name="gender<?php echo $x; ?>" value="female" />Female
...
}
提交后,我尝试检索这些值:
for ( $j = 0; $j < $x; $j++ ) {
echo $_POST['gender'.$j];
...
}
我收到以下错误消息:
Notice: Undefined index: gender0 in ...
Notice: Undefined index: gender1 in ...
Notice: Undefined index: gender2 in ...
然而,我看到我的标记中正确定义了这些无线电组:
<input type="radio" value="male" name="gender0">Male
<input type="radio" value="female" name="gender0">Female
...
<input type="radio" value="male" name="gender1">Male
<input type="radio" value="female" name="gender1">Female
那么为什么会出现这些错误消息?
答案 0 :(得分:1)
只需在接收脚本的开头设置一个var_dump($_POST);
,然后您就会看到确切的内容。
并且您知道只获得实际检查的单选按钮的值,对吧?
因此,如果您无法确定用户是否每个组都选中了一个单选按钮,那么检查是否该POST条目在访问之前是否可用,使用isset
或empty
顺便说一句,处理这样的数据的一种更方便的方法是命名表单字段,以便首先在PHP中获取数组:
<input type="radio" name="gender[0]" value="male" />Male
<input type="radio" name="gender[0]" value="female" />Female
<input type="radio" name="gender[1]" value="male" />Male
<input type="radio" name="gender[1]" value="female" />Female
- 这会在$ _POST ['gender']中找到一个数组,你可以使用这样的foreach循环遍历:
if(isset($_POST['gender']) && is_array($_POST['gender'])) {
foreach($_POST['gender'] as $index => $value) {
// …
}
}