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 mkdir()定义和用法
Jan 14 PHP
PHP 读取和修改大文件的某行内容的代码
Oct 30 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP Switch 语句之学习笔记
Sep 21 PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 PHP
php比较相似字符串的方法
Jun 05 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 PHP
PHP使用非对称加密算法RSA
Apr 21 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的hash算法介绍
2014/02/13 PHP
php 类自动载入的方法
2015/06/03 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
web打印小结
2017/01/11 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
django使用图片延时加载引起后台404错误
2017/04/18 Python
python 使用get_argument获取url query参数
2017/04/28 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
Python调用Redis的示例代码
2020/11/24 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
一组SQL面试题
2016/02/15 面试题
二年级评语大全
2014/04/23 职场文书
美容院合作经营协议书
2014/10/10 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
电话营销开场白
2015/05/29 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
2015大学迎新标语
2015/07/16 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
Go语言怎么使用变长参数函数
2022/07/15 Golang