使用PHP根据之前的调查q显示调查问题的方法

时间:2012-05-02 01:49:34

标签: php

所以我们正在构建一个调查,对于这个例子 - 假设Q1有50个选择,他们可以选择一个(单选按钮)

现在在Q2,我们显示相同的50,减去在Q1中选择的那个。

我最初的想法是编写一个无穷无尽的if语句链,如

如果$ _REQUEST ['q1']!= 1,则回显html代码以获得答案 如果$ _REQUEST ['q1']!= 2,则回答html代码以获得答案#2

正如你所看到的那样可能过度杀伤,而且由于Q1是一个单选按钮,所以只有一个答案。

我甚至不确定如何谷歌或搜索这个答案 - 所以任何建议或建议将不胜感激。我确信我很遗憾:

1 个答案:

答案 0 :(得分:0)

我会将答案存储在一个数组中,其中键作为某种答案ID。 例如$answers=array(0=>"answer 1",1=>"answer 2")

然后,在请求中传播包含密钥的另一个数组中的所选答案(与值无关)。

当渲染应该出现时,使用array_diff_key($ answers,(array)$ _ REQUEST ['chosenAnswers'])函数并渲染生成的数组。 (此函数将返回基于键的两个数组之间的差异,并且先前选择的答案将不在结果数组中)...您可以选择将HTML直接存储在数组中,或仅存储答案,渲染时,在while语句中添加HTML。

这样的事情:

$answers=array(0=>"answer 1",1=>"answer 2",...,50=>"answer 49");
$chosen=(array)$_request['chosenAnswers'];
$result=array_diff_key($answers,$chosen);
$html="";
while ($answer = current($result)) {

    $html.="<label><input type="radio" name="grp1" value='".key($result)."'/>".$answer."</label>";

next($result);
}
echo $html;

我可能在代码中犯了一些错误,但你明白了这一点:)