好的,所以,处理单选按钮数组时遇到的问题与其他线程不同。
我想拥有它,以便根据所选答案,将值保存在不同的数组中,但我不希望用户能够从同一个问题中选择多个选项。< / p>
示例:
Question 1
<input type="radio" name="Array1[]" value="question1"/>
<input type="radio" name="Array2[]" value="question1"/>
<input type="radio" name="Array3[]" value="question1"/>
<input type="radio" name="Array4[]" value="question1"/>
Question 2
<input type="radio" name="Array1[]" value="question2"/>
<input type="radio" name="Array2[]" value="question2"/>
<input type="radio" name="Array3[]" value="question2"/>
<input type="radio" name="Array4[]" value="question2"/>
这样做的目的是让我可以将问题自己安排在4个类别之一中,并用每个数组填充分配给他们的问题。
示例:
假设有4个问题,答案是1,3,1,2,我想要的结果数组是:
Array1[0] = "question1"
Array1[1] = "question3"
Array2[0] = "question4"
Array3[0] = "question3"
Array4[] = Empty array
可以这样做还是我需要一种不同的方法来获得所需的输出?我打算顺便使用PHP来处理这个表单。
编辑:更多细节。一个示例用法。
<h1>What are your preferences?</h1>
<form type=...etc.>
<label>Cats</label>
<input type="radio" name="Love[]" value="Cats"/>
<input type="radio" name="Like[]" value="Cats"/>
<input type="radio" name="Dislike[]" value="Cats"/>
<input type="radio" name="Hate[]" value="Cats"/>
<label>Dogs</label>
<input type="radio" name="Love[]" value="Dogs"/>
<input type="radio" name="Like[]" value="Dogs"/>
<input type="radio" name="Dislike[]" value="Dogs"/>
<input type="radio" name="Hate[]" value="Dogs"/>
<label>Ferrets</label>
<input type="radio" name="Love[]" value="Ferrets"/>
<input type="radio" name="Like[]" value="Ferrets"/>
<input type="radio" name="Dislike[]" value="Ferrets"/>
<input type="radio" name="Hate[]" value="Ferrets"/>
<label>Turtles</label>
<input type="radio" name="Love[]" value="Turtles"/>
<input type="radio" name="Like[]" value="Turtle"/>
<input type="radio" name="Dislike[]" value="Turtles"/>
<input type="radio" name="Hate[]" value="Turtles"/>
<form>
答案 0 :(得分:2)
每个名称只能选择一个单选按钮,因此如果您有不同的名称(就像您一样),用户将能够为每个问题选择多个单选按钮。我很遗憾地说,但你提出的建议是行不通的。相反,您必须维护一个针对相应问题回答的手动数字列表。看起来你提前知道所有的答案,所以这不应该是那么大的交易。
答案 1 :(得分:2)
我认为您可以猜测该名称将复选框分组,因此如果没有javascript,您希望这样做的方式是不合理的。我建议你为每个问题命名复选框,然后你可以使用php按值分组。
例如,如果您得到答案1,3,1,2,则可以push
将它们放入相应的数组中。
这将是这样的。但这不是破解者的证据
<form method="post">
<input type="radio" name="v1" id="v1-1" value="1"/><label for="v1-1">1-1</label><br/>
<input type="radio" name="v1" id="v1-2" value="2"/><label for="v1-2">1-2</label><br/>
<input type="radio" name="v1" id="v1-3" value="3"/><label for="v1-3">1-3</label><br/>
<input type="radio" name="v2" id="v2-1" value="1"/><label for="v2-1">2-1</label><br/>
<input type="radio" name="v2" id="v2-2" value="2"/><label for="v2-2">2-2</label><br/>
<input type="radio" name="v2" id="v2-3" value="3"/><label for="v2-3">2-3</label><br/>
<input type="radio" name="v3" id="v3-1" value="1"/><label for="v3-1">3-1</label><br/>
<input type="radio" name="v3" id="v3-2" value="2"/><label for="v3-2">3-2</label><br/>
<input type="radio" name="v3" id="v3-3" value="3"/><label for="v3-3">3-3</label><br/>
<input type="radio" name="v4" id="v4-1" value="1"/><label for="v4-1">4-1</label><br/>
<input type="radio" name="v4" id="v4-2" value="2"/><label for="v4-2">4-2</label><br/>
<input type="radio" name="v4" id="v4-3" value="3"/><label for="v4-3">5-3</label><br/>
<input type="submit" value="vote"/>
</form>
<?php
if(! empty($_POST))
{
$plausible_answers = array(1,2,3,4);
$answers = array();
for($i=1;! empty($_POST["v$i"]);++$i)
{
if(in_array($_POST["v$i"], $plausible_answers))
{
$answers[$_POST["v$i"]][] = $i;
}
}
print_r($answers);
}
?>
答案 2 :(得分:1)
我认为你需要从另一个方向来看待它,就像这样
<label>Cats</label>
<input type="radio" name="Cats" value="Love"/> Love
<input type="radio" name="Cats" value="Like"/> Like
<input type="radio" name="Cats" value="Dislike"/> Dislike
<input type="radio" name="Cats" value="Hate"/> Hate
在服务器端,类似于:
$loves=array();
$likes=array();
$dislikes=array();
$hates=array();
然后遍历$ _POST,检查值,如果它匹配您期望的四个中的任何一个,则将名称推送到相应的数组中。
答案 3 :(得分:0)
你可以创建像array []这样的数组但是在单选按钮中我们必须为数组[1],数组[2] ...动态地提供索引。 id我们给出像radioArray []这样的名字,就像其他输入类型=“fname []”但它不会自动增加索引,我们必须用额外的变量增加索引。
e.g name= "$radiArray[1] = 'val1'"; //give index like 1,2,3 ...
name ="$radiArray[2] = 'val2'"; ....