PHPでランダム表示のバナーを作る
固定スペースにランダムのバナーを表示するPHPプログラムを紹介します。
アクセスする度に、異なるバナーを表示させる仕組みです。
バナーと言っていますが、バナーじゃなくても表示可能です。
配列 + 乱数生成で手軽に管理
ランダム表示させる仕組みを簡単にまとめます。
表示させたいバナーを配列にする
rand(0,3) → 0~3の乱数を生成する。
生成した乱数を配列のキーに使い、バナーを表示させる
<?php //バナーを代入する配列 $bunner = array(); //配列にバナーを代入する $bunner[0] = '<a href="リンク先"><img src="バナーパス"></a>'; $bunner[1] = '<a href="リンク先"><img src="バナーパス"></a>'; $bunner[2] = '<a href="リンク先"><img src="バナーパス"></a>'; $bunner[3] = '<a href="リンク先"><img src="バナーパス"></a>'; //ランダム生成 $ran = rand(0,3); //ランダム数からバナーを表示 echo $bunner[$ran]; ?>
これでランダム表示のバナーの仕組みが作れるのですが、乱数生成の範囲指定を手動で設定するのが面倒なので、自動で乱数範囲を取得します。
配列の数を取得して使う
PHPには配列の数を取得する count()という関数があるので、それを使います。
配列の数に応じた乱数を取得するコード
//配列の数を取得して -1する $ct = count($bunner) -1; //ランダム生成 $ran = rand(0,$ct);
注意点として、count()で取得する数は始まりが1から、
配列のキーは0から始まるのでその点だけ注意が必要です。
サンプルコードで確認してみましょう。
$test = array(); $test[0] = '1つ目の配列'; $test[1] = '2つ目の配列'; $test[2] = '3つ目の配列'; $test[3] = '4つ目の配列'; echo '配列の数:'.count($test).'<br>'; var_dump($test);
サンプルコードの出力結果
配列の数:4
array(4) { [0]=> string(16) "1つ目の配列" [1]=> string(16) "2つ目の配列" [2]=> string(16) "3つ目の配列" [3]=> string(16) "4つ目の配列" }
通常であればなんら問題のないコードなのですが、乱数の終わり値として使うと、配列の数字とずれが生じます。
count()で生成した数をそのまま利用すると、0~4の乱数が発生しますが、配列のキーは0~3までしか存在しないためです。
というわけで、count()で取得した数を-1すればOKです。
配列のKeyを1から始めるのは?
-1しないで、配列のKeyを1から始めれば、それでも問題ありません。
ただ、配列は「0」から始まるのが基本のルールなので、それを変えるよりは、-1をする方が個人的には良いかなと思います。
この辺は自分のやりやすいやり方で良いと思います。
管理も簡単なランダムバナーのプログラム
実際にコードを書いて確認してみます。
今までの流れをまとめてコードにすると以下のようになります。
<?php //バナーを代入する配列 $bunner = array(); //配列にバナーを代入する $bunner[0] = '<a href="リンク先"><img src="バナーパス"></a>'; $bunner[1] = '<a href="リンク先"><img src="バナーパス"></a>'; $bunner[2] = '<a href="リンク先"><img src="バナーパス"></a>'; $bunner[3] = '<a href="リンク先"><img src="バナーパス"></a>'; //配列の数を取得して -1する $ct = count($bunner) -1; //ランダム生成 $ran = rand(0,$ct); //ランダム数からバナーを表示 echo $bunner[$ran]; ?>
バナーの数を増減したい場合は、$bunnerの配列を増加・減少させれば、表示用のランダム生成を変更することなく、ランダムバナーの表示が可能です。
PHPが使えるサーバーならこれでお手軽にランダムバナー表示が可能です。
バナー以外にランダムテキストとかにも使えます!