• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ラジオボタンをランダムに表示させるには?)

ラジオボタンをランダムに表示させるには?

このQ&Aのポイント
  • 質問文章からセンセーショナルなタイトルを30文字前後で生成
  • 質問の答えの選択肢がラジオボタンで4つ表示されるのですが、毎回同じ位置に答えがあると何度も問題を解いているうちに、回答者は答えの場所を覚えてしまいます。なので質問の答をランダムに表示させたいのですが、どうしてもやり方がわかりません。
  • 小テストのプログラミングを作っています。どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5292/13826)
回答No.1

PHPカテゴリーなのでPHPで書くと仮定して、 $kotae = array( array("key"=>1, "name"=>"夏目漱石"), array("key"=>2, "name"=>"内田百閒"), array("key"=>3, "name"=>"太宰治"), array("key"=>4, "name"=>"芥川龍之介") ); shuffle($kotae); foreach($kotae as $val) { print '<INPUT type="radio" name="sentakushi1" value="' . $val["key"] . '">' . $val["name"] . '<br>'; } といった感じでしょうか。

shenzongse
質問者

補足

ありがとうございました。大成功です。 私はまだ初心者の上に、手元にある入門書にはshuffle関数は書いていませんでしたので、本当に助かりました。 ところで厚かましいのを承知でもう一つだけ伺いたいのですが、問題文自体をランダムに表示するには今回のと同じ要領でいいんでしょうか?実際に作りたいのはたくさんある問題文の中から決められた問題数が重複せずに出題されるようにしたいのです。 今回教えていただいたソースを一つのまとまりにしてランダムに表示させるよう試行錯誤をしているのですが、やはりうまくいきません。恐れ入りますが、ぜひお時間のある時にヒントをいただけたらと思います。 どうぞよろしくお願いいたします。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

たとえばデータの持ち方を工夫してみるとこんな感じで表現できます <? $QA[]=array( "Q"=>array("id"=>"q1","text"=>"質問A") ,"A"=>array( array("key"=>1,"text"=>"回答A-1") ,array("key"=>2,"text"=>"回答A-2") ,array("key"=>3,"text"=>"回答A-3") ,array("key"=>4,"text"=>"回答A-4") ) ); $QA[]=array( "Q"=>array("id"=>"q2","text"=>"質問B") ,"A"=>array( array("key"=>1,"text"=>"回答B-1") ,array("key"=>2,"text"=>"回答B-2") ,array("key"=>3,"text"=>"回答B-3") ,array("key"=>4,"text"=>"回答B-4") ) ); $QA[]=array( "Q"=>array("id"=>"q3","text"=>"質問C") ,"A"=>array( array("key"=>1,"text"=>"回答C-1") ,array("key"=>2,"text"=>"回答C-2") ,array("key"=>3,"text"=>"回答C-3") ,array("key"=>4,"text"=>"回答C-4") ) ); shuffle($QA); $q_no=1; foreach($QA as $arr1){ shuffle($arr1["A"]); print "問".$q_no.")".$arr1["Q"]["text"]."<br>\n"; foreach($arr1["A"] as $arr2){ $id=$arr1["Q"]["id"]."_".$arr2["key"]; print "<INPUT type=\"radio\" id=\"".$id."\" name=\"".$arr1["Q"]["id"]."\" value=\"".$arr2["key"]."\"><label for=\"".$id."\">".$arr2["text"]."</label><br>\n"; } $q_no++; } ?>

shenzongse
質問者

お礼

早速試してみましたが、今回も大成功でした。 また助けていただいてありがとうございました。 理解できるとプログラミングはパズルみたいで面白いですね。 少しずつ工夫を重ねて完成に近づけて行きたいと思います。

関連するQ&A

専門家に質問してみよう