PHPで乱数(rand)を使って配列から値を取得する
更新:2018-06-23
PHPの乱数を使って配列からランダムに値を取得する方法。 いくつかサンプルを記す。
array_rand()
PHP には array_rand() という関数があり、配列からランダムにキーを取り出すことができ、そのキーを利用して配列から値を取得する。
$ar = array('東京都', '神奈川県', '千葉県', '埼玉県', '茨城県', '栃木県', '群馬県');
$r = array_rand($ar);
echo $r . "\n";
echo $ar[$r];
これは連想配列でも使える。 配列を処理するなら一番使いやすいと思われる。
例えばウェブで公開されている様々な API は使用回数に制限があることが多い。 そういう場合、複数の API キーを取得し、配列にそれらを入れ、リクエストごとに配列からランダムに API キーを使うという小細工もできる。 完璧に回数が等分されるわけではないが、概ね良い感じで配列の数だけ等分される。
shuffle()
shuffle() は配列の値を適当にシャッフルしてくれる。
$ar = array('東京都', '神奈川県', '千葉県', '埼玉県', '茨城県', '栃木県', '群馬県');
shuffle($ar);
print_r($ar);
echo $ar[0];
シャッフル後、先頭など特定の配列を取り出せばランダムに値を取り出せることになる。 ただし、shuffle() を使うともとのキーは消えるので、連想配列は注意する。
mt_rand()
PHP で乱数といえば rand() や mt_rand() 関数がある。 配列には array_rand() があるのであまり必要ないが、上記の例と似た処理をすると以下のようになる。
$ar = array('東京都', '神奈川県', '千葉県', '埼玉県', '茨城県', '栃木県', '群馬県');
$r = mt_rand(0, count($ar) - 1);
echo $r . "\n";
echo $ar[$r];
配列の数を数え、その範囲内で乱数を発生させ、それをキーにして値を取り出す。 キーが数値の場合に限る。