・mt_rand関数やchr関数などがあるけど、どう使い分ければいいの?
・配列の中身をランダムに取得することはできる?
PHPでランダムな文字列や数値を生成したいけど、詳しいやり方やどういった関数を使えばいいかわからない人も多いでしょう。
そこでこの記事では、PHPでランダムな文字列や数値を生成する方法について解説します。
この記事を読めば、ランダムな数値を取得するmt_rand関数や文字列を生成するためのchr関数の使い方、配列の中身をランダムに取得する方法などを知ることができるでしょう。
PHPを学習しているけど、ランダムな文字列を生成する方法や関数の使い方がわからないという人は、ぜひ最後までご覧ください。
PHPでランダムな文字列や数値を生成する方法
さっそく、PHPでランダムな文字列や数値を生成する方法について解説していきます。
数値などの値をランダムに取得する場合は、mt_randという関数が使われ、ランダムな文字列を生成する場合はchr関数と併用して使われます。
それぞれの関数の役割や使い方を見ていきましょう。
mt_rand関数を使用する
まずは、mt_rand関数を使用して値を取得する方法です。
mt_rand関数は、ランダムな整数値(乱数値)を取得することができる関数。
ですが、mt_rand関数はrand関数よりも乱数値の取得速度が4倍以上であると言われています。
そのため、乱数値を取得する際は、mt_rand関数を使用することをおすすめします。
では、実際のmt_rand関数の使い方を見ていきましょう。
mt_rand関数を使用する際は、引数を指定する場合としない場合があります。
1 2 3 4 5 |
<?php echo mt_rand(); // 引数を指定しない場合 echo mt_rand(1, 10); // 引数を指定する場合 ?> |
上記のように、引数を指定しない場合は、()の中が空白になり、引数を指定する場合は数値を2つコンマで区切って指定します。
引数を指定しない場合、0〜mt_getrandmax関数で取得できる範囲の数値がランダムで取り出されます。
ちなみに、mt_getrandmax関数で取得できる値の範囲は2147483647までなので、0〜2147483647までの数値がランダムに取得されるということです。
そして、引数を指定する場合は、ランダムに取得する範囲の数値を決めることができます。
例えば、引数を(1, 10)と指定すれば、1〜10までの数値をランダムに取得します。
一度、mt_rand関数を使って数値をランダムに取得してみましょう。
1 2 3 4 |
<?php echo mt_rand()."<br>"; echo mt_rand(1, 10); ?> |
引数を指定しない場合と指定する場合の両方をechoしてみます。
すると、結果は次のようになるでしょう。
今回は、上記のような結果になりました。
引数を指定していない方は「19630522」、引数を1〜10に指定した方は「8」と出ています。
ですが、ランダムに数値が取得されるため、画面を更新するたびに数値が変わるでしょう。
このように、mt_rand関数を使って、ランダムな整数値(乱数値)を取得することができるのです。
chr関数を使用してランダムな文字列を生成する
mt_rand関数の使い方がわかったので、今度はchr関数を使用してランダムな文字列を生成する方法について学んでいきましょう。
mt_rand関数はランダムな数値を取得することができますが、文字列を取得することはできません。
ランダムな文字列を生成するには、mt_rand関数とchr関数を併用することで実装することができます。
chr関数とは、ASCIIコードを特定の文字に変換する関数です。
例えば、先程のmt_rand関数で取得した数値を小文字のアルファベットや大文字のアルファベットに変換することができます。
ASCIIコードによる文字変換は、65が大文字のA、90が大文字のZになるので、mt_rand関数で(65, 90)と指定することで、A〜Zまでの文字列をランダムに生成することが可能になります。
※小文字のアルファベットの場合は、97がa、122がzになります。
1 2 3 |
<?php echo chr(mt_rand(60, 90)); ?> |
結果を見てみると、上記のように大文字のアルファベットが表示されました。
mt_rand関数でランダムに数値を取得しているので、更新するたびにランダムなアルファベットが表示されます。
また、ドット(.)で繋げて、chr関数を複数指定すれば、ランダムな文字列を複数生成することもできます。
1 2 3 4 |
<?php echo chr(mt_rand(60, 90)).chr(mt_rand(60, 90)).chr(mt_rand(60, 90)). chr(mt_rand(60, 90)).chr(mt_rand(60, 90)).chr(mt_rand(60, 90)); ?> |
このように、chr関数はmt_rand関数と併用することでランダムな文字列を生成することができます。
なので、使い方を覚えておくといいでしょう。
配列の中身をランダムに取得する方法
ここまでで、ランダムな数値を取得したり、文字列を生成したりする方法がわかりました。
実は、PHPでは配列の中身をランダムに取得することもできます。
配列の中身をランダムに取得するには、array_rand関数が使われます。
実際の書き方をコードで見ていきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $persons = [ '山田太郎'=>'25歳', '山田次郎'=>'23歳', '山田花子'=>'20歳', '山田三郎'=>'19歳', ]; $rand_key = array_rand($persons, 3); print_r($rand_key); ?> |
まず、「$persons」という連想配列を作ります。
次に、array_rand関数で配列の中身を取得するのですが、array_rand関数の第1引数には「$persons」と指定し、第2引数には取得する要素数(今回は3)を指定します。
そして、そのarray_rand関数を変数の$rand_keyに代入して、結果を出力してみましょう。
結果を表示すると、ランダムな要素が3つ出力されました。
画面を更新すると、表示される要素がランダムに出てくると思います。
このように、array_rand関数を使えば、配列の中身をランダムに取得することができるので、使い方を覚えておくといいでしょう。
まとめ
今回は、PHPでランダムな数値を取得したり、文字列を生成したりする方法について解説しました。
PHPでランダムな文字列や数値を生成するには、mt_rand関数やchr関数を使って実装することができます。
また、array_rand関数を使えば、配列の中身をランダムに取り出すことも可能です。
値をランダムに取得する処理に使うことができるので、使い方を覚えておくといいでしょう。
この記事がPHPの学習に役立つと幸いです。