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 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
PHPMailer 中文使用说明小结
Jan 22 PHP
php5.3 废弃函数小结
May 16 PHP
php生成数组的使用示例 php全组合算法
Jan 16 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
ci检测是ajax还是页面post提交数据的方法
Nov 10 PHP
php给每个段落添加空格的方法
Mar 20 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
php数组函数array_key_exists()小结
Dec 10 PHP
php图片添加水印例子
Jul 20 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 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模板引擎比较分析
2008/05/26 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python实现划词翻译
2020/04/23 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
python对html过滤处理的方法
2018/10/21 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
党课知识竞赛主持词
2014/04/01 职场文书
大学推普周活动总结
2015/05/07 职场文书
德能勤绩工作总结
2015/08/11 职场文书
使用pytorch实现线性回归
2021/04/11 Python
go类型转换及与C的类型转换方式
2021/05/05 Golang
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS