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+MySQL的聊天室设计
Oct 09 PHP
php session处理的定制
Mar 16 PHP
php 抽象类的简单应用
Sep 06 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
php绘图中显示不出图片的原因及解决
Mar 05 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
浅谈PHP中静态方法和非静态方法的相互调用
Oct 04 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 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
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
php通过字符串调用函数示例
2014/03/02 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
php 数据结构之链表队列
2017/10/17 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
jquery自定义表格样式
2015/11/23 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
python类和函数中使用静态变量的方法
2015/05/09 Python
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Python使用type动态创建类操作示例
2020/02/29 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
教师岗位聘任书范文
2014/03/29 职场文书
员工团队活动方案
2014/08/28 职场文书
三严三实对照检查材料
2014/09/22 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
如何在Python中妥善使用进度条详解
2022/04/05 Python
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS