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 相关文章推荐
PHP实现MVC开发得最简单的方法――模型
Apr 10 PHP
shopex中集成的站长统计功能的代码简单分析
Aug 11 PHP
destoon各类调用汇总
Jun 20 PHP
PHP验证信用卡卡号是否正确函数
May 27 PHP
php短信接口代码
May 13 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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
linux下为php添加curl扩展的方法
2011/07/29 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
在Python的Django框架中编写错误提示页面
2015/07/22 Python
Django的session中对于用户验证的支持
2015/07/23 Python
详解python-图像处理(映射变换)
2019/03/22 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
银行员工职业规划范文
2014/01/21 职场文书
共产党员承诺书
2014/03/25 职场文书
交通事故协议书
2014/04/15 职场文书
团日活动总结书
2014/05/08 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
优秀英文求职信范文
2015/03/19 职场文书
升学宴家长致辞
2015/07/27 职场文书
员工手册董事长致辞
2015/07/29 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js