【问题标题】:Efficient banner rotation with PHP使用 PHP 进行高效的横幅旋转
【发布时间】:2012-10-28 10:38:13
【问题描述】:

我通过从一组横幅中随机选择来旋转我网站上的横幅。

示例代码作为演示:

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

横幅的阵列变得相当大。我关心这个数组添加到我的页面执行中的内存量。 但是如果不将所有横幅都加载到内存中,我想不出更好的方法来显示随机横幅......

【问题讨论】:

标签: php random rotation banner


【解决方案1】:

创建一个数据库来存储横幅。然后当您加载页面时,您可以使用 SQL 查询来选择一个随机行。

SELECT * FROM banners ORDER BY RAND() LIMIT 1

【讨论】:

  • 如果我使用 MySQL 执行此操作,它会在页面加载中添加另一个查询。拥有另一个查询将超过在页面加载时节省一些内存的优势。 DanMan,我最近才发现 SQLLite。但我想这会解决我的问题。
【解决方案2】:

将横幅移动到 html 文件并将数组更改为仅包含文件名。

然后您可以按名称包含该文件,只加载所需的横幅。

【讨论】:

  • 我最喜欢这个主意。它会比数据库增加更多的工作,但更容易实现。
【解决方案3】:

一种不需要数组内存或数据库的方法是遵循增量图像命名约定,例如将图像命名为“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>"; 

【讨论】:

  • @reggie:谢谢 - 我并没有真正怀疑你!
猜你喜欢
  • 1970-01-01
  • 2016-04-15
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多