将单选按钮输入保存到数组

时间:2019-05-09 18:00:50

标签: php jquery html

我正在处理一个自定义调查,该调查将动态填充数据库信息,并且需要另存为数组。我可以使一切正常运行,除了我想对许多答案使用星级评分系统,而且单选按钮似乎无法像这样工作:

<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。希望这是有道理的。

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" />