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实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
php实现监听事件
Nov 06 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
php实现Session存储到Redis
Nov 11 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
laravel 出现command not found问题的解决方案
Oct 23 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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设计模式 Mediator (中介者模式)
2011/06/26 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
php实现水仙花数示例分享
2014/04/03 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
跟老齐学Python之变量和参数
2014/10/10 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
python3设计模式之简单工厂模式
2017/10/17 Python
点球小游戏python脚本
2018/05/22 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
python Timer 类使用介绍
2020/12/28 Python
《花的勇气》教后反思
2014/02/12 职场文书
五好关工委申报材料
2014/05/31 职场文书
询价采购方案
2014/06/09 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
义诊活动通知
2015/04/24 职场文书
python中%格式表达式实例用法
2021/06/18 Python
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS
python基础之类属性和实例属性
2021/10/24 Python