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 图像处理类1
Jun 15 PHP
PHP中文件缓存转内存缓存的方法
Dec 06 PHP
PHP 第二节 数据类型之字符串类型
Apr 28 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
php伪静态之APACHE篇
Jun 02 PHP
php实现图片上传并利用ImageMagick生成缩略图
Mar 14 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP中quotemeta()函数的用法讲解
Apr 04 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 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扩展函数
2006/10/09 PHP
php 清除网页病毒的方法
2008/12/05 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
2017/04/13 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
浅谈Python的文件类型
2016/05/30 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
详解Python3中ceil()函数用法
2019/02/19 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
python map比for循环快在哪
2020/09/21 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
战友聚会邀请函
2014/01/18 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
团日活动总结格式
2015/05/11 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书