1

バナーの配列からランダムに選択して、サイトのバナーをローテーションします。

デモとしてのサンプル コード:

<?php
$banners = array(
'<iframe>...</iframe>',
'<a href="#"><img src="#.jpg" alt="" /></a>',
//and so on
);
echo $banners(rand(0, count($banners)));
?>

バナーの配列はかなり大きくなりました。この配列がページの実行に追加するメモリの量に関心があります。しかし、すべてのバナーをメモリにロードせずにランダムなバナーを表示するより良い方法を見つけることはできません...

4

3 に答える 3

3

バナーを格納するデータベースを作成します。次に、ページをロードするときに、SQL クエリを使用してランダムな行を選択できます。

SELECT * FROM banners ORDER BY RAND() LIMIT 1
于 2012-10-28T10:44:13.467 に答える
2

バナーを html ファイルに移動し、ファイル名のみを含むように配列を変更します。

次に、必要なバナーのみをロードして、そのファイルを名前で含めることができます。

于 2012-10-28T10:43:06.630 に答える
0

配列メモリやデータベースを必要とせずにこれを行う方法は、増分画像命名規則に従うことです。たとえば、画像に「banner1.jpg」、「banner2.jpg」などの名前を付けます。次に、次のようにします。

$int_banners = 10;  // the number of banner images you have
$i = rand(1, $int_banners);
echo "<a href='#'><img src='banner$i.jpg' alt=''></a>";  // add an iframe too if you want

このような規則を使用できない場合は、ファイル名だけで配列を作成できます(または、他の回答で提案されているように、SQLデータベースを使用してバナーを格納します)。

$lst_banners = array("img1.jpg", "/home/img2.jpg", "/about/img3.jpg");
$int_banners = count($lst_banners);
$i = rand(0, ($int_banners - 1));
echo "<a href='#'><img src='" . $lst_banners[$i] . "' alt=''></a>"; 

または、Zlatanが提案しているように、array_rand()を使用ファイル名を見つけることができます。

$lst_banners = array("img1.jpg", "/home/img2.jpg", "/about/img3.jpg");
$name = array_rand($lst_banners, 1);
echo "<a href='#'><img src='$name' alt=''></a>"; 
于 2012-10-28T10:51:26.043 に答える