指定した範囲の中から、重複しない数字をランダムに取り出すPHPです。
単純にランダムに取得していくと、重複する場合がありますが、今回は重複をしないように抜き出します。
関連記事の表示やおすすめ商品のピックアップ等まで、ランダムに表示させたい場面は多いので、最初から重複を避けた抜き出しを心がけたいですね。
SPONSORED LINK
目次
とりあえず一つだけランダムで抜き出す場合
1~100までの数字から一つだけ抜き出す。
$num= mt_rand(1,100);
1から10までの数字からランダムに抜き出す
for ($i = 0 ; $i < 5 ; $i++){
$num = mt_rand(1, 6);
print $num."/";
}
5回ループしてみましょう。
すると、
1/2/9/3/9
同じ数字が重複してしまいました。
今回はこれを避ける方法です。
まずは数字の配列を作る
$ar_num = range(1,10);
これで1~10までの配列が完成しました。
数字が入った配列をシャッフルする
shuffle($ar_num);
これで格納された要素の順番がバラバラになった配列になりました。
シャッフルした配列を表示
for ($i = 0 ; $i < 5 ; $i++){
print $ar_num[$i]."/";
}
5回ループしてみましょう。
すると、
6/3/9/1/4
絶対に同じ数字が重複する事はありません。
東プレ 2008-02-01
まとめ
並んだ数字からランダムに取得する方法と、数字をシャッフルしてから頭から取得する方法の違いです。
PHPに限らず数字のランダムは使う場面の多い物なので、小技として覚えておくと捗ります。
今日も知識欲は止まらない。