所以我们正在构建一个调查,对于这个例子 - 假设Q1有50个选择,他们可以选择一个(单选按钮)
现在在Q2,我们显示相同的50,减去在Q1中选择的那个。
我最初的想法是编写一个无穷无尽的if语句链,如
如果$ _REQUEST ['q1']!= 1,则回显html代码以获得答案 如果$ _REQUEST ['q1']!= 2,则回答html代码以获得答案#2
等
正如你所看到的那样可能过度杀伤,而且由于Q1是一个单选按钮,所以只有一个答案。
我甚至不确定如何谷歌或搜索这个答案 - 所以任何建议或建议将不胜感激。我确信我很遗憾:
答案 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;
我可能在代码中犯了一些错误,但你明白了这一点:)