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 相关文章推荐
真正面向对象编程:PHP5.01发布
Oct 09 PHP
session 的生命周期是多长
Oct 09 PHP
十天学会php之第五天
Oct 09 PHP
Gregarius中文日期格式问题解决办法
Apr 22 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
Apr 01 PHP
php实现的短网址算法分享
Jun 20 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 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重新实现PHP脚本引擎内置函数
2007/03/06 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
Document对象内容集合(比较全)
2010/09/06 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
Python 私有化操作实例分析
2019/11/21 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
Python调用JavaScript代码的方法
2020/10/27 Python
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
C#如何进行LDAP用户校验
2012/11/21 面试题
自主招生自荐信
2013/12/08 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
任命书格式
2014/06/05 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
单位委托书格式范本
2014/09/29 职场文书
应届毕业生自荐信
2015/03/04 职场文书
防卫过当辩护词
2015/05/21 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书