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>"; 

或者更好的是,您可以使用array_rand()来查找文件名,如Zlatan所建议的:

$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 回答