Blogブログ

PHPで配列内の値をランダムに取得する方法

2012/12/07

phpの配列に入っている値をランダムに取得し、順不同で表示したい場合があります。

そんな時に便利な関数と使い方を紹介したいと思います。

$data[0] = "バナナ" ;
$data[1] = "リンゴ" ;
$data[2] = "メロン" ;
$data[3] = "イチゴ" ;
$data[4] = "マンゴー" ;

//$dataKeyに配列のキーがランダムに3件入ります
$dataKey = array_rand ( $data , 3 );

//値を取得するにはランダムに入っているキーから値を取得してあげます。
foreach ( $dataKey as $key ){
	print $data[$key];
}

問題点

ただ、この書き方だと、取得した値はランダムなのですが、順番が一定になってしまいます。

array_rand()で取得できるのはキーのみになり、var_dump ( $dataKey ) で中身を見ると

array(3) {
  [0]=>
  int(0)
  [1]=>
  int(2)
  [2]=>
  int(4)
}

このような形になります。ここで順番もランダムにしたい場合さらにshuffle() という関数を使います。

完成形

$data[0] = "バナナ" ;
$data[1] = "リンゴ" ;
$data[2] = "メロン" ;
$data[3] = "イチゴ" ;
$data[4] = "マンゴー" ;

//$dataKeyに配列のキーがランダムに3件入ります
$dataKey = array_rand ( $data , 3 );

//順番をランダムにする
shuffle ( $dataKey );

//値を取得するにはランダムに入っているキーから値を取得してあげます。
foreach ( $dataKey as $key ){
	print $data[$key];
}

これで完成です。

array_rand()の第二引数の数字を変更すると取得できる件数がいじれます。

他社より断然お得で使いやすい
”アクトのWEB制作”
ACTホームページ相談窓口 / 
システム開発相談窓口