php 随机排序广告的实现代码


Posted in PHP onMay 09, 2011

投放广告的人都很关注他的广告会放在哪个位置, 因为这可能影响点击次数, 甚至是否在第一屏显示. 就这个问题, 其实很容易解决, 只要随机显示广告即可.

代码如何实现? 在这我推荐两种随机显示广告的处理办法.

在后端处理
在后端排序好再输出页面. 将广告节点用数组存放, 对数组进行随机排序, 再输出经过排序的数组. 参考代码 (PHP) 如下:

// 用数组存放广告列表 
$ads = array('<a href="#"><img src="ad-125x125.png" alt="广告 1" width="125" height="125" /></a>' 
,'<a href="#"><img src="ad-125x125.png" alt="广告 2" width="125" height="125" /></a>' 
,'<a href="#"><img src="ad-125x125.png" alt="广告 3" width="125" height="125" /></a>' 
,'<a href="#"><img src="ad-125x125.png" alt="广告 4" width="125" height="125" /></a>' 
); // 对数组进行随机排序 
shuffle($ads); 
// 输出经过排序的数组 
$html = ''; 
foreach ($ads as $ad) { 
$html .= $ad; 
} 
echo $html;

我们来扩展一下, 如果我是站长, 预留了 4 个广告位, 但现在只有 3 个在投放; 我想在空置的广告位放置一个 "虚位以待" 的广告招租链接, 并显示在最后, 该如何处理呢? 在排序完成之后再插放广告招租链接就可以了.
// 用数组存放广告列表 
$ads = array('<a href="#"><img src="ad-125x125.png" alt="广告 1" width="125" height="125" /></a>' 
,'<a href="#"><img src="ad-125x125.png" alt="广告 2" width="125" height="125" /></a>' 
,'<a href="#"><img src="ad-125x125.png" alt="广告 3" width="125" height="125" /></a>' 
); // 对数组进行随机排序 
shuffle($ads); 
// 输出经过排序的数组 
$html = ''; 
foreach ($ads as $ad) { 
$html .= $ad; 
} 
// 添加广告招租链接 
$html .= '<a href="#"><img src="sell-ad-125x125.png" alt="虚位以待" width="125" height="125" /></a>'; 
echo $html;

我就是用这个方法来输出 125x125 广告的, 因为它直观可靠, 处理方便. 但是如果你希望对页面做静态化, 建议选用 JS 随机排序的方法.

在前端处理
在后端按原有循序输出, 在页面通过 JavaScript 重新排序. 假设页面输出广告区域的 HTML 片段如下.

<div id="ads"> 
<a href="#"><img src="ad-125x125.png" alt="广告 1" width="125" height="125" /></a> 
<a href="#"><img src="ad-125x125.png" alt="广告 2" width="125" height="125" /></a> 
<a href="#"><img src="ad-125x125.png" alt="广告 3" width="125" height="125" /></a> 
<a href="#"><img src="ad-125x125.png" alt="广告 4" width="125" height="125" /></a> 
</div>

我们可以通过 JS 来对广告进行重新排序. 参考代码如下:
<div id="ads" style="display:none;"> 
<a href="#"><img src="ad-125x125.png" alt="广告 1" width="125" height="125" /></a> 
<a href="#"><img src="ad-125x125.png" alt="广告 2" width="125" height="125" /></a> 
<a href="#"><img src="ad-125x125.png" alt="广告 3" width="125" height="125" /></a> 
<a href="#"><img src="ad-125x125.png" alt="广告 4" width="125" height="125" /></a> 
</div> 
<div id="random-ads" style="display:none;"> 
</div> <script type="text/javascript"> 
//<![CDATA[ 
var source = document.getElementById('ads'); 
var target = document.getElementById('random-ads'); 
var ads = source.getElementsByTagName('a'); 
// 下标数组 
var arr = new Array(); 
for(var i=0; i<ads.length; i++) { 
arr[i] = i; 
} 
// 随机排序 
function randomSort(a, b){ 
var tmp = parseInt((Math.random() + 0.5), 10); 
return tmp ? a-b : b-a; 
} 
// 将老的广告区的节点随机插放到新的广告区 
arr.sort(randomSort); 
for(var i=0; i<arr.length; i++) { 
target.appendChild(ads[arr[i]].cloneNode(true)); 
} 
// 显示新的广告区和移除老的广告区 
source.parentNode.removeChild(source); 
target.style.display = 'block'; 
//]]> 
</script>

如果有如同方法 1 那样的扩展需求, 将空广告位显示在最后, 且显示广告招租链接, 该如何处理? 这个当作课后习题吧...
PHP 相关文章推荐
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
生成php程序的php代码
Apr 07 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
php计算函数执行时间的方法
Mar 20 PHP
php生成图片验证码的实例讲解
Aug 03 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
thinkPHP实现将excel导入到数据库中的方法
Apr 22 PHP
PHP封装的MSSql操作类完整实例
May 26 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
关于php开启错误提示的总结
Sep 24 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 #PHP
PHP新手入门学习方法
May 08 #PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 #PHP
php 大数据量及海量数据处理算法总结
May 07 #PHP
php 截取字符串并以零补齐str_pad() 函数
May 07 #PHP
php调用mysql数据 dbclass类
May 07 #PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 #PHP
You might like
php array_flip() 删除数组重复元素
2009/01/14 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
一段好玩的JavaScript代码
2006/12/01 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
学校教学工作总结2015
2015/05/19 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
党员心得体会范文2016
2016/01/23 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python