2010-06-05 47 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而不是覆盖它(带有可能来自它的所有服务器/浏览器缓存问题)。