PHPでランダムかつ重複しない数値を配列にする方法

PHPで、ランダムな数値を複数取得して、かつその中の値には重複しないようにしたい場合の処理です。

取得結果は扱いやすい配列で残ります。

僅か3行のソースコードで実現できるのでお試しください。

特定の範囲の乱数から重複しない値を複数抽出する方法

サンプルコード
//1から10までの数値から抽選を行うため、1~10の値の配列を生成する
$array = range(1, 10);
//配列をシャッフルする
shuffle($array);
//配列の上から5番目まで切り取る
$array = array_slice($array, 0, 5);

print_r($array);
Array
(
    [0] => 3
    [1] => 8
    [2] => 1
    [3] => 5
    [4] => 2
)

実際にこのプログラムを動作させていますので、リロ―ドすると結果が変わります。
ちゃんと重複しない値が5つ選ばれていることが分かります。

この処理は、以下の流れで行われています。

  • 特定の数値の範囲指定を行い、1つずつ格納した配列を生成する
  • 配列の値をシャッフルする
  • 配列の上から指定した値を切り取る
  • 重複しない値を任意の数取得!

どこからどこまでの値を対象にするか、抽選結果は何件にするかは、各々で変更を加えてください。

配列の切り取りは、array_slice関数を使用しています。

【PHP】array_sliceの使い方。配列を範囲指定して切り取る関数

以上、PHPでランダムかつ重複しない数値を配列にする方法、でした。

PHP