PHP基礎編9:乱数を覚えるとちょっとしたゲームも出来る

PHP入門
CANIT先生
CANIT先生

さて、今回の講義ではPHP の乱数について学んでいきますよ

猫田さん
猫田さん

乱数……また知らない言葉が出てきましたねぇ

牛山くん
牛山くん

僕もあまりイメージがわかないですね

難しく聞こえるかもしれませんが、簡単に言えば乱数は「区切られた範囲をランダムに表示する」ものです。WEB上で表示されるパスワードの仕組みや、クイズなどさまざまなポイントで使うことが出来ます。 今回は、乱数の作り方や使い方などについて詳しく紹介しましょう。

CANIT先生
CANIT先生

内容を入力してください。ということで、さっそく乱数を学んでいきましょう

PHPの学習:乱数の作り方と使い方

数字

PHPで乱数を使用する方法は色々とあります。まずは基本となる「乱数を生成する方法」から紹介していきましょう。

CANIT先生
CANIT先生

さて、PHPで乱数を生成するためには「rand関数」を使用します

Rand関数とは、前回の学習で紹介した「関数」で定義されている中の「組み込み関数」に分類される関数です。新たに自分で設定する必要はありません。簡単に使用出来ます。

rand関数の使い方

まずは、わかりやすいようにrand関数を実際に使用するとどのような結果になるのか紹介しましょう

CANIT先生
CANIT先生

まずは、わかりやすいようにrand関数を実際に使用するとどのような結果になるのか紹介しましょう

猫田さん
猫田さん

よっ!待ってました!

実際に使った際のrand関数の書き方と結果は下記のようになります。

プログラミングの記述に関してはrand関数を表示しているだけなので、非常にシンプルです。これだけで「ランダムな数値」を生成することが出来ます。

配列の要素をランダムに取得する

CANIT先生
CANIT先生

上記ではrand関数の基礎について紹介しました。続いて、配列の要素をランダムに取得する方法です

配列の要素をランダムに取得するためには「array_rand関数」を使用します。こちらもrand関数と同じく組み込み関数となっていますので、使い方は簡単です。 具体的な使い方については下記の通りになります。

このように5つの要素がある連想配列($color)の要素をランダムに3つ取得して、新たに「$rand_color」という変数に配列として格納しているのがポイントです。こちらで紹介したarray_rand関数を使用することで、配列の要素をランダムに取得することが出来ます。

ポイントとしては、ランダムに取得する配列と、取得する値を指定する必要があります。そのため、それらは引数として設定しなければいけません。

新たに使用した「print_r関数」については「引数の中身を出力する」という関数です。 プログラミングしたものが、思っているとおりに出力されるのかを確認する際に使用することが多いので、これからも使用頻度は高まると思われます。

乱数を使って選択肢がランダムになるクイズを作成しよう

プログラマー
CANIT先生
CANIT先生

さて、ここからPHPを使ってWEB上でクイズを作成していきます。WEB上で表示させるために、今回はHTMLの要素も少しだけ含まれるので注意してくださいね

以前にも紹介しましたが、PHPはWEB上で動的なプログラミングをする際に用いられる言語なので、HTMLについても理解しなければいけません。 それでは、紹介していきましょう。

基本となるHTMLの枠組みを作成する

PHPのプログラミングをする前に、まずは基本となるHTMLの枠組みから作っていきます。

今回は「4択のクイズ」を作成しますので、ラジオボタンを使った選択問題を作成しましょう。 枠組みとなるHTMLのプログラミングですが、こちらの画像のように作成します。

基本となるのはこのような形で、プログラミング部分の上部の赤枠内はクイズの基本となる「問題文、選択肢、解答」の3つの要素を、PHPを使って変数に格納しています。

赤枠の下部については、HTMLとPHPを使って「問題文」・「ラジオボタン」・「選択肢」・「回答ボタン」の4つの要素を出力しています。

これで表記部分に関しては完成でも良いのですが、「<input type=”radio”~~」というのが4連続で書き込まれているのは少し不格好です。

この形式にしてしまうと4択の問題しか使用することが出来ないので、3択や5択になったときに困ります。 そのため、このような場合には以前に学習した「foreach文」を使って配列の要素の数だけループする使い方をすると便利です。

先ほど紹介した赤枠の下部をこちらに変更するだけで、選択肢の数が変動しても対応できるようになります。

これで完了でも良いのですが、このままだと選択肢が表示される順番が変動しませんので、常に1番が正解となってしまいます。 そのため、次は選択肢をランダムに表示させるようにしていきましょう。

shuffle関数を使って配列の中身をランダムにしよう

選択肢をランダムにするために今回は「shuffle関数」を使用していきます。 shuffle関数は指定した引数の中身をシャッフルするというものなので、使用するポイントはクイズの初期情報を入力した部分です。

このようにすると、$choiceの中身をシャッフルすることできるので、出力結果のように表示される選択肢をバラバラにすることが出来ます。

答えを格納する変数に答えを格納してからシャッフルしないと間違った回答を答えとして格納してしまうことになるので注意してください。

テスト:クイズ問題を作ってみよう

行動
CANIT先生
CANIT先生

それでは恒例となりました、練習問題の時間です。と言っても、今回は前半部分でほとんどの説明をしたので、新たにクイズを作ると言っても問題文と選択肢を変えるだけで完成します

猫田さん
猫田さん

つまり、簡単なんですね。 俄然、やる気が出てきましたよ

今回は前半で紹介した部分をキッチリと理解しているかを確認するために下記の条件とします。5択の問題を作る。これだけです。

前半で紹介したのは4択だったので、それを5択にして出力させてください。 参考画像は下記に表示します。

答えはこの通りになります。

変更した部分としては、問題文を格納する「$question」の中身と、配列の要素を1つ追加しただけです。

問題を表示させるHTMLの部分をPHPと連動させてしっかりと作り込んでおくと、選択肢の数や問題文が変わっても簡単に変更することが出来ます。 もしも、最初に紹介したHTMLの構成のままだと選択肢が変動する度に色々と変更しなければならない部分が出てきますので、非常に面倒なことになります。

PHPの学習:乱数まとめ

プログラミング
CANIT先生
CANIT先生

というわけで、今回の講義では乱数とランダムにするための関数について紹介しました

牛山くん
牛山くん

ありがとうございました

猫田さん
猫田さん

今回もスキルアップしちゃいましたねー

ホームページを作るのにランダムにすることを覚えて何の役に立つのか分からない人も多いかもしれません。でも、今回学習したことを活かせばWEBアプリでクイズゲームなどを作ることも出来ます。

また、テスト勉強や資格試験の勉強をする際にも問題文と選択肢を自分で作ることで高い学習効果を得ることが出来ますので、色々なことに使えます。 次回は「配列の要素をカウントする方法」について紹介していきますね。

挫折率が高い??プログラミング学習のポイント
駆け出しエンジニアが一緒に学ぶ
CANITは、Progateやドットインストールで独学している人達同士をつなげます。駆け出しエンジニアのあなたのためのSNSです。
PHP入門
【この記事を書いた人】
CANIT 先生

あらゆるプログラミング言語をあやつるフリーの凄腕講師。温和な性格で「わかるまで教えます」がモットー。たまに時間ができると動物の仲間達に、プログラミングを教えることもある。現在の生徒は牛山くんと猫田さん。

CANIT
タイトルとURLをコピーしました