PHP で普通に配列から値を取得しようとすると array_rand()
で取得したキーを元の配列に入れる微妙な面倒さがあり、ついでにこれだけだと順番がランダムになっていなくて、それもまた微妙に面倒。
ということで配列と取り出す数を指定してサクッとランダムに取り出せる関数を書いた
function array_rand_and_shuffle(array $array, int $num_req)
{
shuffle($array);
// 配列の要素数が取得数に満たない場合はシャッフルだけする
if(count($array) <= $num_req) return $array;
$random_keys = array_rand($array, $num_req);
$rand_array = [];
foreach($random_keys as $key){
$rand_array[] = $array[$key];
}
return $rand_array;
}