・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年7月14日に投稿されました。)
PHPで配列の要素をランダムに取得する方法として、array_rand()があります。
array_rand()とは指定した配列から要素を無作為に取り出す関数であり、配列を指定することで取り出す配列のキーを返り値として返すようになります。
array_rand()はデフォルトとして、取り出すのは1つですが、第2パラメータを指定することで、取り出すキーの数を設定することができます。
そして、1次元配列だけでなく、2次元や3次元のような多次元配列や連想配列の要素でもランダムに取り出すことができます。
また、array_rand()はキーを返す関数であることから、この関数だけでは要素を表示することができません。
そのため、ランダムに取り出した要素を表示したい場合は、foreach文と組み合わせて使用しましょう。
今回はPHPのarray_rand()で配列や連想配列から要素をランダムに取得する方法について紹介していきます。
array_rand()とは
冒頭でも言いましたが、array_rand()とは、指定した配列の中から要素を無作為に抜き出す関数となります。
しかし、取り出される要素は値ではなく、キーとなります。
array_rand()の書き方
array_rand()の書き方は下記のようになります。
1 | <?php array_rand('対象の配列', '要素数'); ?> |
array_rand()は基本1つのパラメータを指定すると使用することができますが、最大で2つのパラメータを指定することができます。
array_rand()のパラメータ
array_rand()のパラメータは下記のようになります。
- 対象の配列(必須):
ランダムに抜き出す配列名を指定する - 要素数(任意):
取得する要素の数を指定する
array_rand()は必須なパラメータとして対象の配列を指定します。
そして、任意なパラメータとして要素数を指定することができます。
array_rand()で配列から要素をランダムに取得するサンプルコード
array_rand()で配列から要素をランダムに取得するサンプルコードをご紹介します。
ここでは、下記の2つの場合でarray_rand()を使用してみます。
- 対象の配列の要素が存在する場合
- 対象の配列の要素が空である場合
対象の配列の要素が存在する場合
対象の配列の要素が存在する場合に、array_rand()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php echo '⚫︎ 対象の配列-1'; echo "\n"; $array1 = ['イタリア', 'ドイツ', 'ポルトガル', 'フランス', 'スウェーデン']; var_dump($array1); echo "\n"; echo '⚫︎ array_rand()使用後-1'; echo "\n"; $array1_rnd = array_rand($array1); echo $array1_rnd; echo "\n"; echo "\n"; echo '⚫︎ 対象の配列-2'; echo "\n"; $array1 = [12, 31, 8, 4, 9]; var_dump($array1); echo "\n"; echo '⚫︎ array_rand()使用後-2'; echo "\n"; $array1_rnd = array_rand($array1); echo $array1_rnd; ?> |
実行結果
対象の配列の要素が複数存在する場合は、配列の中からランダムに要素のキーが取り出されるようになります。
そのため、要素のキーである「1」と「4」が表示されています。
対象の配列の要素が空である場合
対象の配列の要素が空である場合に、array_rand()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 | <?php echo '⚫︎ 対象の配列'; echo "\n"; $array1 = []; var_dump($array1); echo "\n"; echo '⚫︎ array_rand()使用後'; echo "\n"; $array1_rnd = array_rand($array1); echo $array1_rnd; ?> |
実行結果
対象の配列の要素が空である場合は、取り出す要素見つからないためエラーが発生します。
array_rand()で要素数を指定して要素をランダムに取得するサンプルコード
array_rand()の要素数を指定して配列から要素をランダムに取得するサンプルコードをご紹介します。
ここでは、下記の2つの場合でarray_rand()を使用してみます。
- 要素数に正の数を指定した場合
- 要素数に負の数を指定した場合
要素数に正の数を指定した場合
要素数に正の数を指定した場合に、array_rand()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php echo '⚫︎ 対象の配列-1'; echo "\n"; $array1 = ['イタリア', 'ドイツ', 'ポルトガル', 'フランス', 'スウェーデン']; var_dump($array1); echo "\n"; echo '⚫︎ array_rand()使用後-1'; echo "\n"; $array1_rnd = array_rand($array1, 2); var_dump($array1_rnd); echo "\n"; echo "\n"; echo '⚫︎ 対象の配列-2'; echo "\n"; $array1 = [12, 31, 8, 4, 9]; var_dump($array1); echo "\n"; echo '⚫︎ array_rand()使用後-2'; echo "\n"; $array1_rnd = array_rand($array1, 2.2); var_dump($array1_rnd); ?> |
実行結果
array_rand()の要素数に正の数を指定すると、数値分の要素のキーがランダムに取り出されるようになります。
また、要素数に小数を指定すると、切り下げた数値分の要素のキーがランダムに取り出されるようになります。
そのため、要素のキーである「0と3」や「0と2」が表示されています。
要素数に負の数を指定した場合
要素数に負の数を指定した場合に、array_rand()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 | <?php echo '⚫︎ 対象の配列'; echo "\n"; $array1 = ['イタリア', 'ドイツ', 'ポルトガル', 'フランス', 'スウェーデン']; var_dump($array1); echo "\n"; echo '⚫︎ array_rand()使用後'; echo "\n"; $array1_rnd = array_rand($array1, -2); var_dump($array1_rnd); ?> |
実行結果
要素数に負の数を指定した場合にarray_rand()を使用すると、エラーが発生します。
array_rand()で多次元配列から要素をランダムに取得するサンプルコード
array_rand()で多次元配列から要素をランダムに取得するサンプルコードをご紹介します。
ここでは、下記の2つの場合でarray_rand()を使用してみます。
- 2次元配列から要素をランダムに取得する場合
- 3次元配列から要素をランダムに取得する場合
2次元配列から要素をランダムに取得する場合
2次元配列から要素をランダムに取得する場合に、array_rand()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php echo '⚫︎ 対象の配列'; echo "\n"; $array2 = [ ['イタリア', 'ドイツ', 'ポルトガル'], ['フランス', 'スウェーデン', 'スペイン'], ['ポーランド', 'ノルウェー', 'イギリス'], ]; var_dump($array2); echo "\n"; // 2次元配列の要素をランダムに取得する echo '⚫︎ array_rand()使用後-1'; echo "\n"; $array2_rnd = array_rand($array2); var_dump($array2_rnd); echo "\n"; // 1次元配列の要素をランダムに取得する echo '⚫︎ array_rand()使用後-2'; echo "\n"; $array2_rnd = array_rand($array2[1], 2); var_dump($array2_rnd); ?> |
実行結果
array_rand()で2次元配列から要素のキーをランダムに取得しています。
そして、配列の後ろにインデックスを指定すると、2次元配列内にある1次元配列の要素のキーをランダムに取得することができます。
3次元配列から要素をランダムに取得する場合
3次元配列から要素をランダムに取得する場合に、array_rand()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php echo '⚫︎ 対象の配列'; echo "\n"; $array2 = [ [['イタリア', 'ドイツ', 'ポルトガル'],['フランス', 'スウェーデン', 'スペイン']], [['ベルギー', 'フィンランド', 'アイルランド'],['チェコ', 'ルーマニア', 'ブルガリア']], [['モルドバ', 'キプロス', 'スロベニア'],['モナコ', 'ベラルーシ', 'モナコ']] ]; var_dump($array2); echo "\n"; // 3次元配列の要素をランダムに取得する echo '⚫︎ array_rand()使用後-1'; echo "\n"; $array2_rnd = array_rand($array2); var_dump($array2_rnd); echo "\n"; // 2次元配列の要素をランダムに取得する echo '⚫︎ array_rand()使用後-2'; echo "\n"; $array2_rnd = array_rand($array2[0]); var_dump($array2_rnd); echo "\n"; // 1次元配列の要素をランダムに取得する echo '⚫︎ array_rand()使用後-3'; echo "\n"; $array2_rnd = array_rand($array2[0][0], 2); var_dump($array2_rnd); ?> |
実行結果
array_rand()で2次元配列から要素のキーをランダムに取得しています。
そして、配列の後ろにインデックスを指定すると、3次元配列内にある1次元配列の要素のキーをランダムに取得することができます。
array_rand()で連想配列から要素をランダムに取得する場合
連想配列から要素をランダムに取得する場合にarray_rand()を使用してみます。
ここでは、下記の2つの場合でarray_rand()を使用してみます。
- 連想配列の値をランダムに取得する場合
- 連想配列のキーをランダムに取得する場合
連想配列の値をランダムに取得する場合
array_rand()で連想配列の値をランダムに取得してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '⚫︎ 対象の連想配列'; echo "\n"; $array1 = [ 'フランス' => 'France', 'ドイツ' => 'Germany', 'イタリア' => 'Italia', 'スペイン' => 'Spain', 'ポルトガル' => 'Portugal' ]; var_dump($array1); echo "\n"; echo '⚫︎ array_rand()使用後'; echo "\n"; $array1_rnd = array_rand($array1, 3); var_dump($array1_rnd); ?> |
実行結果
array_rand()によって連想配列の値のキーをランダムに取得しています。
そのため、「ドイツ」や「スペイン」、「ポルトガル」が表示されています。
連想配列のキーをランダムに取得する場合
array_rand()で連想配列の値をランダムに取得してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php echo '⚫︎ 対象の連想配列'; echo "\n"; $array1 = [ 'フランス' => 'France', 'ドイツ' => 'Germany', 'イタリア' => 'Italia', 'スペイン' => 'Spain', 'ポルトガル' => 'Portugal' ]; $gg = array_keys($array1); var_dump($gg); echo "\n"; echo '⚫︎ array_rand()使用後'; $array1_rnd = array_rand($gg, 2); var_dump($array1_rnd); ?> |
実行結果
array_keys()でキーを取得し、array_rand()によって連想配列のキーをランダムに取得しています。
しかし、連想配列のキーを取得する場合は、0から始まる番号が新たに振られています。
もし、array_keys()について詳しく知りたい場合は、下記の記事をご参考ください。
array_rand()で取り出した要素を表示する場合
array_rand()で取り出した要素を表示する場合は、foreach文を使用します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $array1 = ['イタリア', 'ドイツ', 'ポルトガル', 'フランス', 'スウェーデン']; var_dump($array1); echo "\n"; echo '⚫︎ array_rand()使用後'; echo "\n"; $array1_rnd = array_rand($array1, 3); var_dump($array1_rnd); echo '⚫︎ array_rand()で取り出した要素を表示'; echo "\n"; foreach ($array1_rnd as $key) { echo $array1[$key]; echo "\n"; } ?> |
実行結果
foreach文によって、ランダムで取得された要素が表示されています。
そのため、「イタリア」や「ドイツ」、「スウェーデン」が表示されています。
foreach文について詳しく知りたい場合は、下記の記事をご参考ください。
まとめ
⚫︎ array_rand()とは指定した配列の中から要素を無作為に抜き出す関数である
⚫︎ array_rand()は最大で2つのパラメータを指定することができる
・ 対象の配列(必須)
・ 要素数(任意)
⚫︎ 対象の配列の要素が存在する場合にarray_rand()を使用すると、配列の中から無作為に要素のキーが取り出される
⚫︎ 対象の配列の要素が存在しない場合にarray_rand()を使用すると、エラーが発生する
⚫︎ 要素数に正の数を指定してarray_rand()を使用すると、数値分の要素のキーがランダムに取り出される
(小数を指定すると、切り上げした数値分となる)
⚫︎ 要素数に負の数を指定した場合にarray_rand()を使用すると、エラーが発生する
⚫︎ array_rand()は多次元配列の要素をランダムに取り出すこともできる
⚫︎ array_rand()は連想配列の値やキーをランダムに取り出すこともできる
(キーの場合は番号が新たに振られる)
⚫︎ array_rand()でランダムに取り出した要素を表示するには、foreach文を使用する