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 相关文章推荐
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
浅谈PHP中的
Apr 23 PHP
PHP7匿名类用法分析
Sep 26 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
PHP生成图表pChart的示例解析
Jul 31 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学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
基于header的一些常用指令详解
2013/06/06 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
php数组转成json格式的方法
2015/03/09 PHP
php实现多城市切换特效
2015/08/09 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
使用jQuery判断IE浏览器版本的代码
2014/06/14 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
Python生成随机数的方法
2014/01/14 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
python3 pygame实现接小球游戏
2019/05/14 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
python Tensor和Array对比分析
2020/01/08 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
什么是命名空间(NameSpace)
2015/11/24 面试题
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
大学军训感言800字
2014/02/27 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
优秀班集体申报材料
2014/12/25 职场文书
办公室个人总结
2015/02/28 职场文书
接待员岗位职责范本
2015/04/15 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python