2012-02-01 48 views
0

如何加入这两个字符串并根据条目列表创建随机链接。PHP - 带两个字符串的随机文本

// Add a link and the associated image // 
$adlink1="http://www.****.com/sale.php"; 
$adlinkpic1="http://www.***-cdn.com/blogAssets/ad/1.jpg"; 
$adlink2="http://www.*****.com/sale.php"; 
$adlinkpic2="http://www.**-cdn.com/blogAssets/ad/2.jpg"; 
$adlink3="http://www.**.com/product.php?prodref=564_white&ref=AddSphere"; 
$adlinkpic3="http://www.**-cdn.com/blogAssets/ad/3.jpg"; 
$adlink4="http://www.**.com/wedding-boutique.php"; 
$adlinkpic4="http://www.**-cdn.com/blogAssets/ad/4.jpg"; 
$adlink5="http://www.**.com/made-to-measure-service.php"; 
$adlinkpic5="http://www.**-cdn.com/blogAssets/ad/5.jpg"; 

// SHOW ONE AD LINK 

srand ((double) microtime() * 1000000); 
$adlink[] + $adlinkpic[] = rand(0,count($quotes)-1); 
echo "<a href='$adlink'><img src='$adlinkpic' />"; 

// SHOW TWO AD LINKS /cannot be same 

// code here 
+0

你能解释更清楚一点你正在尝试做什么? – 2012-02-01 11:04:22

+0

我的事情,他试图从列出的链接中获得随机图像和链接。这是对的吗 ? – sivakg2000 2012-02-01 11:06:05

回答

3

这是很容易把你所有的链接在(关联)数组,然后使用array functions操纵它们:

<?php 
$ad = array(
    array(
     "url" => "http://www.****.com/sale.", 
     "img" => "http://www.***-cdn.com/blogAssets/ad/1.jpg" 
    ), 
    array(
     "url" => "http://www.*****.com/sale.", 
     "img" => "http://www.**-cdn.com/blogAssets/ad/2.jpg" 
    ), 
    array(
     "url" => "http://www.**.com/product.php", 
     "img" => "http://www.**-cdn.com/blogAssets/ad/3.jpg" 
    ), 
    array(
     "url" => "http://www.**.com/wedding-boutique.", 
     "img" => "http://www.**-cdn.com/blogAssets/ad/4.jpg" 
    ), 
    array(
     "url" => "http://www.**.com/made-to-measure-service.", 
     "img" => "http://www.**-cdn.com/blogAssets/ad/5.jpg" 
    ) 
    // more ads 
); 

$id = array_rand($ad); // choose a random index from the array 
echo "<a href=\"{$ad[$id]['url']}\"><img src=\"{$ad[$id]['img']}\" /></a>\n"; 
unset($ad[$id]);  // remove the chosen one so that it is not displayed on next pass 

$id = array_rand($ad); 
echo "<a href=\"{$ad[$id]['url']}\"><img src=\"{$ad[$id]['img']}\" /></a>\n"; 
unset($ad[$id]); 
+1

不错,但是你应该围绕回声块而不是复制粘贴进行循环。 – PiTheNumber 2012-02-01 11:14:09

+0

非常感谢。虽然循环会更好,但我喜欢它。重写 – TheBlackBenzKid 2012-02-01 11:24:09

+0

当然;只需将三条线包裹在一个循环中运行两次。我将它们分开,假设可能需要在页面的两个单独位置上显示广告。 – 2012-02-01 11:37:12

1

我会忍不住做这样的事情:

<?php 
    // Add a link and the associated image // 
    $adlink1="http://www.****.com/sale.php"; 
    $adlinkpic1="http://www.***-cdn.com/blogAssets/ad/1.jpg"; 
    $adlink2="http://www.*****.com/sale.php"; 
    $adlinkpic2="http://www.**-cdn.com/blogAssets/ad/2.jpg"; 
    $adlink3="http://www.**.com/product.php?prodref=564_white&ref=AddSphere"; 
    $adlinkpic3="http://www.**-cdn.com/blogAssets/ad/3.jpg"; 
    $adlink4="http://www.**.com/wedding-boutique.php"; 
    $adlinkpic4="http://www.**-cdn.com/blogAssets/ad/4.jpg"; 
    $adlink5="http://www.**.com/made-to-measure-service.php"; 
    $adlinkpic5="http://www.**-cdn.com/blogAssets/ad/5.jpg"; 

    $links = array(); 
    $links[0]=array('link'=>$adlink1,'pic'=>$adlinkpic1); 
    $links[1]=array('link'=>$adlink2,'pic'=>$adlinkpic2); 
    $links[2]=array('link'=>$adlink3,'pic'=>$adlinkpic3); 
    $links[3]=array('link'=>$adlink4,'pic'=>$adlinkpic4); 
    $links[4]=array('link'=>$adlink5,'pic'=>$adlinkpic5); 

    $alreadyAdded=array(); 
    for ($i=0;$i<2;$i++) { 
    $added = false; 
    while (!$added) { 
     // generate random number 
     $rand = mt_rand(0,4); 
     if (!in_array($rand,$alreadyAdded)) { 
     echo "<a href='".$links[$rand]['link']."'><img src='".$links[$rand]['pic']."' />"; 
     $added = true; 
     $alreadyAdded[]=$rand; 
     } 
    } 
    } 

编辑:注意到你想超过1输出,更新的代码,以反映。

+1

不要忘记从项目数组中取消该变量,以便它不会被重新使用:) – 2012-02-01 11:06:18

+0

@BarryChapman - 更新了我的答案以反映:) – Nick 2012-02-01 11:11:51

+0

非常感谢。虽然我去了上面的双数组 - 重复。 – TheBlackBenzKid 2012-02-01 11:24:48