将无线按钮输入保存到数组中

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (9)

我正在进行一项自定义调查,该调查动态填充数据库信息,需要保存为数组。我可以让一切正常工作,除了我想对许多答案使用星级评分系统,似乎单选按钮不会像这样工作:

<input type="radio" name="surveyRating[]" value="1" />
<input type="radio" name="surveyRating[]" value="2" />
<input type="radio" name="surveyRating[]" value="3" />
<input type="radio" name="surveyRating[]" value="4" />
<input type="radio" name="surveyRating[]" value="5" />

因为这个代码有多个实例。这将被保存到一个数组中,因此surveyRating将一遍又一遍地使用。如果我单击一个组中的单选按钮,它将更改为另一个组中的单选按钮。

我已经读过,我可以用复选框来做这件事。这是最好的选择吗?或者我应该关注另一种选择吗?我希望最终产品的星级评分为1-5。不确定我是否可以使用复选框。

编辑

好的,所以使用name="surveyRating[1]"有助于在客户端没有冲突的单选按钮。但是,它没有正确保存我现在设置我的PHP的方式。以下是目前的保存方式。我需要做些什么才能使[1]工作正常进行。目前它只保存最后一次迭代。

$new = array();
$ratings = $_POST['surveyRating'];
$count = count( $ratings );
for ( $i = 0; $i < $count; $i++ ) {
  if ( $ratings[$i] != '' ) {
    $new[$i]['surveyRating'] = stripslashes( strip_tags( $ratings[$i] ) );
  }
}

编辑2

因此,为了演示如何使用下面的答案完成此操作,我必须添加[0]作为循环中的第一个迭代。我$items = 0; $items++用来动态地为每个循环添加一个数字。

为了使它从0开始,我设置$items = -1第一次迭代为0而不是1.希望这是有道理的。

提问于
用户回答回答于

是的,它确实是因为你有名字[]。那是阵列。删除它,你会得到它没有数组:

<input type="radio" name="surveyRating" value="1" />
<input type="radio" name="surveyRating" value="2" />
<input type="radio" name="surveyRating" value="3" />
<input type="radio" name="surveyRating" value="4" />
<input type="radio" name="surveyRating" value="5" />

对于具有多个组的单选按钮,您必须执行以下操作:

<!-- Group 1 -->
<input type="radio" name="surveyRating[1]" value="1" />
<input type="radio" name="surveyRating[1]" value="2" />
<input type="radio" name="surveyRating[1]" value="3" />
<input type="radio" name="surveyRating[1]" value="4" />
<input type="radio" name="surveyRating[1]" value="5" />

<!-- Group 2 -->
<input type="radio" name="surveyRating[2]" value="1" />
<input type="radio" name="surveyRating[2]" value="2" />
<input type="radio" name="surveyRating[2]" value="3" />
<input type="radio" name="surveyRating[2]" value="4" />
<input type="radio" name="surveyRating[2]" value="5" />

扫码关注云+社区

领取腾讯云代金券