无法从多个无线电组中检索单选按钮值

时间:2014-02-14 14:03:16

标签: radio-button

在我的表单中,我生成了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 

那么为什么会出现这些错误消息?

1 个答案:

答案 0 :(得分:1)

只需在接收脚本的开头设置一个var_dump($_POST);,然后您就会看到确切的内容。

并且您知道只获得实际检查的单选按钮的值,对吧? 因此,如果您无法确定用户是否每个组都选中了一个单选按钮,那么检查是否该POST条目在访问之前是否可用,使用issetempty

顺便说一句,处理这样的数据的一种更方便的方法是命名表单字段,以便首先在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) {
    // …
  }
}