php 隨機(jī)排序廣告的實(shí)現(xiàn)代碼
更新時(shí)間:2011年05月09日 19:37:07 作者:
博客流行在側(cè)邊欄放置 4 到 6 個(gè) 125x125 的廣告, 但一般的擺放順序存在問(wèn)題. 如果廣告位置被固定, 各個(gè)位置的天然關(guān)注度肯定是不一樣的
投放廣告的人都很關(guān)注他的廣告會(huì)放在哪個(gè)位置, 因?yàn)檫@可能影響點(diǎn)擊次數(shù), 甚至是否在第一屏顯示. 就這個(gè)問(wèn)題, 其實(shí)很容易解決, 只要隨機(jī)顯示廣告即可.
代碼如何實(shí)現(xiàn)? 在這我推薦兩種隨機(jī)顯示廣告的處理辦法.
在后端處理
在后端排序好再輸出頁(yè)面. 將廣告節(jié)點(diǎn)用數(shù)組存放, 對(duì)數(shù)組進(jìn)行隨機(jī)排序, 再輸出經(jīng)過(guò)排序的數(shù)組. 參考代碼 (PHP) 如下:
// 用數(shù)組存放廣告列表
$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>'
);
// 對(duì)數(shù)組進(jìn)行隨機(jī)排序
shuffle($ads);
// 輸出經(jīng)過(guò)排序的數(shù)組
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}
echo $html;
我們來(lái)擴(kuò)展一下, 如果我是站長(zhǎng), 預(yù)留了 4 個(gè)廣告位, 但現(xiàn)在只有 3 個(gè)在投放; 我想在空置的廣告位放置一個(gè) "虛位以待" 的廣告招租鏈接, 并顯示在最后, 該如何處理呢? 在排序完成之后再插放廣告招租鏈接就可以了.
// 用數(shù)組存放廣告列表
$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>'
);
// 對(duì)數(shù)組進(jìn)行隨機(jī)排序
shuffle($ads);
// 輸出經(jīng)過(guò)排序的數(shù)組
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}
// 添加廣告招租鏈接
$html .= '<a href="#"><img src="sell-ad-125x125.png" alt="虛位以待" width="125" height="125" /></a>';
echo $html;
我就是用這個(gè)方法來(lái)輸出 125x125 廣告的, 因?yàn)樗庇^可靠, 處理方便. 但是如果你希望對(duì)頁(yè)面做靜態(tài)化, 建議選用 JS 隨機(jī)排序的方法.
在前端處理
在后端按原有循序輸出, 在頁(yè)面通過(guò) JavaScript 重新排序. 假設(shè)頁(yè)面輸出廣告區(qū)域的 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>
我們可以通過(guò) JS 來(lái)對(duì)廣告進(jìn)行重新排序. 參考代碼如下:
<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');
// 下標(biāo)數(shù)組
var arr = new Array();
for(var i=0; i<ads.length; i++) {
arr[i] = i;
}
// 隨機(jī)排序
function randomSort(a, b){
var tmp = parseInt((Math.random() + 0.5), 10);
return tmp ? a-b : b-a;
}
// 將老的廣告區(qū)的節(jié)點(diǎn)隨機(jī)插放到新的廣告區(qū)
arr.sort(randomSort);
for(var i=0; i<arr.length; i++) {
target.appendChild(ads[arr[i]].cloneNode(true));
}
// 顯示新的廣告區(qū)和移除老的廣告區(qū)
source.parentNode.removeChild(source);
target.style.display = 'block';
//]]>
</script>
如果有如同方法 1 那樣的擴(kuò)展需求, 將空廣告位顯示在最后, 且顯示廣告招租鏈接, 該如何處理? 這個(gè)當(dāng)作課后習(xí)題吧...
代碼如何實(shí)現(xiàn)? 在這我推薦兩種隨機(jī)顯示廣告的處理辦法.
在后端處理
在后端排序好再輸出頁(yè)面. 將廣告節(jié)點(diǎn)用數(shù)組存放, 對(duì)數(shù)組進(jìn)行隨機(jī)排序, 再輸出經(jīng)過(guò)排序的數(shù)組. 參考代碼 (PHP) 如下:
復(fù)制代碼 代碼如下:
// 用數(shù)組存放廣告列表
$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>'
);
// 對(duì)數(shù)組進(jìn)行隨機(jī)排序
shuffle($ads);
// 輸出經(jīng)過(guò)排序的數(shù)組
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}
echo $html;
我們來(lái)擴(kuò)展一下, 如果我是站長(zhǎng), 預(yù)留了 4 個(gè)廣告位, 但現(xiàn)在只有 3 個(gè)在投放; 我想在空置的廣告位放置一個(gè) "虛位以待" 的廣告招租鏈接, 并顯示在最后, 該如何處理呢? 在排序完成之后再插放廣告招租鏈接就可以了.
復(fù)制代碼 代碼如下:
// 用數(shù)組存放廣告列表
$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>'
);
// 對(duì)數(shù)組進(jìn)行隨機(jī)排序
shuffle($ads);
// 輸出經(jīng)過(guò)排序的數(shù)組
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}
// 添加廣告招租鏈接
$html .= '<a href="#"><img src="sell-ad-125x125.png" alt="虛位以待" width="125" height="125" /></a>';
echo $html;
我就是用這個(gè)方法來(lái)輸出 125x125 廣告的, 因?yàn)樗庇^可靠, 處理方便. 但是如果你希望對(duì)頁(yè)面做靜態(tài)化, 建議選用 JS 隨機(jī)排序的方法.
在前端處理
在后端按原有循序輸出, 在頁(yè)面通過(guò) JavaScript 重新排序. 假設(shè)頁(yè)面輸出廣告區(qū)域的 HTML 片段如下.
復(fù)制代碼 代碼如下:
<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>
我們可以通過(guò) JS 來(lái)對(duì)廣告進(jìn)行重新排序. 參考代碼如下:
復(fù)制代碼 代碼如下:
<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');
// 下標(biāo)數(shù)組
var arr = new Array();
for(var i=0; i<ads.length; i++) {
arr[i] = i;
}
// 隨機(jī)排序
function randomSort(a, b){
var tmp = parseInt((Math.random() + 0.5), 10);
return tmp ? a-b : b-a;
}
// 將老的廣告區(qū)的節(jié)點(diǎn)隨機(jī)插放到新的廣告區(qū)
arr.sort(randomSort);
for(var i=0; i<arr.length; i++) {
target.appendChild(ads[arr[i]].cloneNode(true));
}
// 顯示新的廣告區(qū)和移除老的廣告區(qū)
source.parentNode.removeChild(source);
target.style.display = 'block';
//]]>
</script>
如果有如同方法 1 那樣的擴(kuò)展需求, 將空廣告位顯示在最后, 且顯示廣告招租鏈接, 該如何處理? 這個(gè)當(dāng)作課后習(xí)題吧...
您可能感興趣的文章:
- 強(qiáng)制PHP命令行腳本單進(jìn)程運(yùn)行的方法
- PHP運(yùn)行時(shí)強(qiáng)制顯示出錯(cuò)信息的代碼
- php廣告加載類用法實(shí)例
- 適用于抽獎(jiǎng)程序、隨機(jī)廣告的PHP概率算法實(shí)例
- php 廣告調(diào)用類代碼(支持Flash調(diào)用)
- 用PHP實(shí)現(xiàn)的隨機(jī)廣告顯示代碼
- 用PHP實(shí)現(xiàn)小型站點(diǎn)廣告管理
- 用PHP實(shí)現(xiàn)小型站點(diǎn)廣告管理(修正版)
- 隨機(jī)廣告顯示(PHP函數(shù))
- php強(qiáng)制運(yùn)行廣告的方法
相關(guān)文章
PHP數(shù)組函數(shù)array_multisort()用法實(shí)例分析
這篇文章主要介紹了PHP數(shù)組函數(shù)array_multisort()用法,結(jié)合實(shí)例形式詳細(xì)分析了array_multisort函數(shù)的功能,定義及進(jìn)行數(shù)組排序過(guò)程中的使用技巧,需要的朋友可以參考下2016-04-04
php報(bào)錯(cuò)502badgateway解決方法
在本篇文章里小編給大家整理了關(guān)于php報(bào)錯(cuò)502badgateway解決方法相關(guān)知識(shí)點(diǎn),有需要的朋友們參考下。2019-10-10
PHP函數(shù)之error_reporting(E_ALL ^ E_NOTICE)詳細(xì)說(shuō)明
在看帝國(guó)cms的connect.php是發(fā)現(xiàn)第一句是error_reporting(E_ALL ^ E_NOTICE);以前也沒(méi)注意過(guò)這個(gè)語(yǔ)句,知道是設(shè)置錯(cuò)誤提示的,但不清楚具體怎樣設(shè)置使用。下面從網(wǎng)上摘抄了些東西,總結(jié)了一下。2011-07-07
Windows服務(wù)器中PHP如何安裝redis擴(kuò)展
一句話總結(jié):下載擴(kuò)展的dll,放入指定文件夾(php對(duì)應(yīng)的擴(kuò)展的目錄php/ext),在配置文件php.ini中注冊(cè)dll,這里就為大家分享一下2019-09-09
使用php+Ajax實(shí)現(xiàn)唯一校驗(yàn)實(shí)現(xiàn)代碼[簡(jiǎn)單應(yīng)用]
使用php+Ajax實(shí)現(xiàn)唯一校驗(yàn)實(shí)現(xiàn)代碼[簡(jiǎn)單應(yīng)用],前臺(tái)用ajax后臺(tái)用php,需要的朋友可以參考下。2011-11-11
怎么在Windows系統(tǒng)中搭建php環(huán)境
因?yàn)楹芏鄍hp初學(xué)者在環(huán)境搭建這一環(huán)節(jié)就費(fèi)了很大的功夫,導(dǎo)致失去了學(xué)習(xí)php的興趣,所以小編推薦初學(xué)者使用集成軟件搭建環(huán)境,隨著學(xué)習(xí)的不斷深入,再回過(guò)頭來(lái)了解環(huán)境2013-08-08

