質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

1668閲覧

PHP 変数への数字をランダムかつ重複なしにしたい。

Hiroo0121

総合スコア2

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/07/31 03:08

編集2021/07/31 04:12

PHPにてクイズアプリを制作しています。
問題が表示され正解か不正解かの判定をし、次の問題の表示を表示するところまでは作成しております。
問題を変数 n で管理しており、0~9 までのいずれかの数字が入力されると対応した問題が出題されるのですが、
nに対して 0~9 で なおかつ10回の処理以内に重複をしないようにするにはどうすればよいでしょうか。

下記のURLを参照にPHPを組んだのですが
https://pisuke-code.com/php-create-non-overlap-randoms/

/** 乱数用配列 /
$rands = [];
/
* 乱数の範囲は1~10 */
$min = 1; $max = 10;

for($i = $min; $i <= $max; $i++){
while(true){
/** 一時的な乱数を作成 */
$tmp = mt_rand($min, $max);

/* * 乱数配列に含まれているならwhile続行、 * 含まれてないなら配列に代入してbreak */ if( ! in_array( $tmp, $rands ) ){ array_push( $rands, $tmp ); break; }

}
}

$randsを$nに変換してもエラーがでてしまいます。

また不正防止のために、ブラウザバックをしたときにエラーもしくは特定のページに飛ぶようにしたいのですが、
PHPではなくjavascriptでしか方法はないのでしょうか。

問題コード

<?php $quiz = [ ['Q'=>'水樹奈々さんの血液型は?', //問題文 'A'=>['A型','B型','O型','AB型'], //回答群 'C'=>2 //正解のエントリー ], ['Q'=>'水樹奈々さんのデビューシングル「想い」の発売日は?', //問題文 'A'=>['2001年 12月4日','2001年 12月5日','2001年 12月6日','2001年 12月7日'], //回答群 'C'=>2 //正解のエントリー ], ['Q'=>'水樹奈々さんのシングルCDの中で売り上げ枚数が1番多いのは?',//問題文 'A'=>['BRIGHT STREAM','ETERNAL BLAZE','PHANTOM MINDS','Synchrogazer'], //回答群 'C'=>0 //正解のエントリー ], ['Q'=>'SC NANA NETファンクラブイベントⅦ 奈々の部屋 2日目のゲストは?',//問題文 'A'=>['森口博子','中村悠一','若本規夫','水木一郎'], //回答群 'C'=>3 //正解のエントリー ], ['Q'=>'2016年に開催された NANA MIZUKI LIVE PARK 2016 7曲目に歌われた曲は? ',//問題文 'A'=>['STAND UP!','POP MASTER','76th Star','7COLORS'], //回答群 'C'=>1 //正解のエントリー ], ['Q'=>'NANA MUSIC LABORATORY 2019 〜ナナラボ〜にて<br> 早見沙織さんとデュエットした際の水樹さんの衣装の色は?',//問題文 'A'=>['白','青','赤','緑'], //回答群 'C'=>3 //正解のエントリー ], ['Q'=>'水樹奈々さんの結婚記念日は?',//問題文 'A'=>['7月6日','7月7日','7月8日','7月9日'], //回答群 'C'=>0 //正解のエントリー ], ['Q'=>'STORIESはどのシングルのカップリング曲?',//問題文 'A'=>['Trickster',' 夢幻','MASSIVE WONDERS','STARCAMP EP'], //回答群 'C'=>1 //正解のエントリー ], ['Q'=>'still in the grooveのジャケットの水樹さんは何色の服を着ている?',//問題文 'A'=>['青','黄色','緑','赤'], //回答群 'C'=>3 //正解のエントリー ], ['Q'=>'2019年に開催されたNANA MIZUKI LIVE GRACE -OPUSⅢ<br> ステージに設置された時計台が指していた時間は? ',//問題文 'A'=>['9時57分','9時58分','9時59分','10時00分'], //回答群 'C'=>1 //正解のエントリー ], ]; $n = rand( 0, 9 ); $title = $quiz[$n]['Q']; $question = $quiz[$n]['A']; $answer = $question[$quiz[$n]['C']]; ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>水樹奈々クイズ</title> </head> <body> <h2><?php echo $title?></h2> <form method="POST" action="answer.php">
<?php foreach ($question as $value){ ?> <input type="radio" name="question" value="<?php echo $value; ?>" /><?php echo $value ?> <br> <?php } ?> <br> <input type="hidden" name="answer" value="<?php echo $answer?>"> <input type="submit" value="回答する">
</form> </body> </html>

回答用コード

<?php $question = $_POST['question']; $answer = $_POST["answer"]; if ($question == $answer) { $result = "正解!"; }else{ $result = "不正解 <br><br> 答え $answer"; } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>水樹奈々クイズ</title> </head> <body> <h2>結果</h2> <?php echo $result?>
<input type="hidden" name="answer" value="<?php echo $answer?>"> <br> <br> <a href="index.php"><input type="submit" value="次の問題へ"></a>
</body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2021/07/31 03:15

JavaScriptは関係なさそうなので、適切な質問タグにしていただけると助かります????
guest

回答2

0

$rands = []; の後ろのコメントに * が足りませんね。

あと、不正防止を考え出すとキリがないので、とりあえず完成を目指してはいかがでしょうか?

投稿2021/08/02 11:34

takasima20

総合スコア7464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

重複しない乱数の方ですが、$randsを宣言してないだけでは?

投稿2021/08/01 10:30

hiok

総合スコア595

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問