PHP 特定の要素をランダムに表示する方法

PHP 特定の要素をランダムに表示する方法

PHP を使って特定の要素をランダムに表示する方法を紹介します。

  1. 50%の確率でランダムに表示
  2. 配列ごとに確率を設定して表示

50%の確率でランダムに表示

PHP を使って50%の確率で表示をランダムにする方法を紹介します。
ランダムな値を取得するには PHP の関数 rand() を使用します。

<?php // 50%の確率でランダム表示
$r = rand(0,1); // 0 か 1 をランダムに代入
if ($r == 0) { // $r の値が 0 だったら表示
echo '表示';
} else { // $r の値が 0 ではない場合に非表示
echo '非表示';
}
?>

配列ごとに確率を設定して表示

配列ごとに確率を設定して表示する方法を紹介します。
次のコードは、配列ごとに確率を設定して、その値を参照して該当する配列を一つ表示します。

<?php // 配列ごとに確率を設定して表示
// まずは配列の準備
$first = array('text'=>'first','per'=>10); // 確率10%
$second = array('text'=>'second','per'=>20); // 確率20%
$third = array('text'=>'third','per'=>70); // 確率70%
$array = array($first, $second, $third); // 配列の作成
// 続いて配列の毎の確率の値を全て足します
$total = 0; // 合計値のリセット
foreach ($array as $val) {
$total += $val['per']; // $total に確率の値を足していきます
}
echo '表示確率の合計は'.$total.'%です。<br />';
// 足した数字を上限にランダムな数字を決定、合わせて比較用数字のリセット
$rand = rand(1,$total);
$x = 0; // 比較用数字のリセット
// 改めて配列のループをスタート
foreach ($array as $val) {
// 比較用数字の準備
$num1 = $x + 1;
$num2 = $x + $val['per'];
// $rand と各配列の確率の値を比較して表示
if( $rand >= $num1 && $rand <= $num2 ){
echo 'ランダムな数'.$rand.'に対して、確率'.$val['per'].'%の'.$val['text'].'が条件に一致しました。';
break; // ループの終了
}
// ループが終了しなかった場合は次の配列へ移行
$x = $num2;
}
?>

配列を自前で準備できる場合は、配列の準備の値を適宜変更してください。

まとめ

PHP を使って特定の要素をランダムに表示する方法を紹介しました。