小テストのプログラミングを作っています。
質問の答えの選択肢がラジオボタンで4つ表示されるのですが、毎回同じ位置に答えがあると何度も問題を解いているうちに、回答者は答えの場所を覚えてしまいます。
なので質問の答をランダムに表示させたいのですが、どうしてもやり方がわかりません。
どうぞよろしくお願いいたします。
問1:小説「吾輩は猫である」の作者は誰ですか?<br>
<INPUT type="radio" name="sentakushi1" value="1">夏目漱石<br>
<INPUT type="radio" name="sentakushi1" value="2">内田百閒<br>
<INPUT type="radio" name="sentakushi1" value="3">太宰治<br>
<INPUT type="radio" name="sentakushi1" value="4">芥川龍之介<br>
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++;
}
?>
早速試してみましたが、今回も大成功でした。
また助けていただいてありがとうございました。
理解できるとプログラミングはパズルみたいで面白いですね。
少しずつ工夫を重ねて完成に近づけて行きたいと思います。
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>';
}
といった感じでしょうか。
この回答への補足
ありがとうございました。大成功です。
私はまだ初心者の上に、手元にある入門書にはshuffle関数は書いていませんでしたので、本当に助かりました。
ところで厚かましいのを承知でもう一つだけ伺いたいのですが、問題文自体をランダムに表示するには今回のと同じ要領でいいんでしょうか?実際に作りたいのはたくさんある問題文の中から決められた問題数が重複せずに出題されるようにしたいのです。
今回教えていただいたソースを一つのまとまりにしてランダムに表示させるよう試行錯誤をしているのですが、やはりうまくいきません。恐れ入りますが、ぜひお時間のある時にヒントをいただけたらと思います。
どうぞよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
foreachで上限回数指定方法また...
-
phpでforeachの中にforeachがあ...
-
スカラーのベクトル微分
-
ヒアドキュメントの中のfor文
-
プログラミングのPythonのnoteb...
-
ファイルの書き込みについて教...
-
2次元配列への標準入力
-
file_existsでファイル名の部分...
-
プルダウンメニューにDBの内容...
-
自動で番号を振りたい
-
while文について
-
配列をループでたくさん宣言し...
-
phpで、連想配列を普通の配列に...
-
一度に複数の値を取得できる乱...
-
smartyでページングするには
-
Smartyのテンプレートからjavas...
-
配列を回すとき、最後の要素だ...
-
多次元配列の一次元目の最大値...
-
php Undefined variableエラー
-
PHP: 未定義エラーの回避方法を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
smartyのforeachの使い方
-
マッチング処理(1:N)
-
foreachで上限回数指定方法また...
-
多次元配列を、1次元の配列にす...
-
foreachの間にテーブルの<TR>を...
-
PHP、{}記号の意味
-
VB.NET で 二次元のハッシュは...
-
$_POST受信で必要項目のみを結...
-
3つの連想配列を交互に代入し...
-
PHP:ツリー構造をulとli要素に...
-
foreachで配列を、左から縦3列...
-
PHPの構文で間違えが分からない
-
PHPで連想配列のプルダウンメニ...
-
添え字が全て文字列のPHPの多次...
-
テーブルデータ表示
-
Smartyでインクリメント
-
PHPで変数名にハイフンを使うに...
-
POSTで渡されるデータの数がわ...
-
Delphi XEの警告文を消したい
-
配列の要素の値をループ中に変...
おすすめ情報