0

したがって、私が作成している調査があります。この例では、Q1に50の選択肢があり、そのうちの1つを選択できるとします(ラジオボタン)。

今度は第2四半期に、第1四半期に選択されたものと同じ50マイナスを表示します。

私の最初の考えは、次のようなifステートメントの無限のチェーンを書くことでした。

$ _REQUEST ['q1']!= 1の場合、回答のhtmlコードをエコーし​​ますif $ _REQUEST ['q1']!= 2、回答#2のhtmlコードをエコーし​​ます

ご覧のとおり、これはおそらくやり過ぎであり、Q1はラジオボタンであるため、答えは1つだけです。

これに対する答えをグーグルで検索したり検索したりする方法すらわかりませんでした。アドバイスや提案をいただければ幸いです。私は非常に簡単なものを見逃していると確信しています:/

4

1 に答える 1

0

ある種の回答IDとしてキーを持つ配列に回答を保存します。例えば$answers=array(0=>"answer 1",1=>"answer 2")

次に、選択した回答を、キー (値が何であるかは関係ありません) を含む別の配列にリクエストと共に伝達します。

レンダリングが開始されたら、array_diff_key($answers,(array)$_REQUEST['chosenAnswers']) 関数を使用して、結果の配列をレンダリングします。(この関数は、キーに基づいて 2 つの配列の違いを返し、以前に選択した回答は結果の配列には含まれません)... 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;

私はコードでいくつかの間違いを犯したかもしれませんが、あなたはアイデアを得る:)

于 2012-05-02T02:21:23.647 に答える