2010-06-05 83 views
0

因此,我有以下代碼,對於5個不同的側邊欄廣告隨機生成位置的作品很有用,我的問題是如何爲廣告提供一個始終與它們配對的鏈接。與PHP隨機廣告配對鏈接

我要找的建議從一些PHP大師以這樣做的最佳實踐...

<ul class="top_ads"> 
    <?php 
     $totalImages = 5; 
     $all = range(1,$totalImages); 
     shuffle($all); 

     foreach ($all as $single) { 
      echo "<li><a href='' /><img src='"; echo bloginfo('template_url') . "/images/ads/ad_0$single.png' alt='ad' /></li>"; 
     } 
    ?> 
</ul> 

回答

1

最簡單的方法是有鏈接的圖像的數組,然後有$單是數組索引。有兩種方法可以實現這一點。一個是有一個二維數組,其中包含鏈接和圖像,另一個是有兩個平行數組。這裏有兩個選項所示:

<?php 
// one two dimensional array 
$ads = array(array("1.png", "/page1"), array("2.png", "/page2"), array("3.png", "/page3"), array("4.png", "/page4"), array("super-special-buy-now.png", "/billy-mays-lives")); 

// or two one dimensions arrays 
$ads_images = array("1.png", "2.png", "3.png", "4.png", "super-special-buy-now.png"); 
$ads_links = array("/page1", "/page2", "/page3", "/page4", "/billy-mays-lives"); 

// now your code 
$totalImages = 5; 
$all = range(1,$totalImages); 
shuffle($all); 

$html = ""; 
foreach ($all as $single) { 
    // option 1, two dimensional array 
    $html += sprintf('<li><a href="%s"><img src="%s/images/ads/ad_0%s" alt="ad" /></li>', 
     $ads[$single][1], bloginfo('template_url'), $ads[$single][0]); 

    // option 2, two parallel arrays 
    $html += sprintf('<li><a href="%s"><img src="%s/images/ads/ad_0%s" alt="ad" /></li>', 
     $ads_links[$single], bloginfo('template_url'), $ads_images[$single]); 
} 
echo $html; 
?> 
+0

你真棒我的男人!唯一的麻煩是,輸出只是給我的模板的URL,沒有其他的東西:( 這裏的代碼:http://cl.ly/1Hhg 而這裏的輸出:http://cl.ly/1HLr – Brian 2010-06-05 03:52:54

0

通常情況下,你要麼:
- 已經在查詢從數據庫中檢索他們隨機播放它們,或者
- 隨機ID/URL對的數組:

$d => array (
    array('id'=>1,'url'=>'...'), 
    array('id'=>2,'url'=>'...') 
    array('id'=>3,'url'=>'...')); 
array_shuffle($d); 

這也可以更容易地刪除添加1而不是覆蓋它(帶有可能來自它的所有服務器/瀏覽器緩存問題)。