Сопряжение ссылок с рандомизированной рекламой PHP - PullRequest
0 голосов
/ 05 июня 2010

Итак, у меня есть следующий код, который отлично работает для случайного создания позиции для 5 различных объявлений на боковой панели, моя проблема в том, как дать объявлениям ссылку, которая всегда будет в паре с ними.

Я ищу предложения от некоторых 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>

Ответы [ 2 ]

1 голос
/ 05 июня 2010

Самый простой способ - иметь массив изображений со ссылками, а затем указывать $ single в качестве индекса массива. Есть два способа сделать это. Один из них должен иметь двухмерный массив, который содержит как ссылки, так и изображения, а другой - два параллельных массива. Здесь показаны оба варианта:

<?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 голосов
/ 05 июня 2010

Обычно вы бы либо:
- перемешать их уже в запросе, который извлекает их из базы данных, или
- Перемешать массив пар id / url:

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

Что также упростит удаление 1 вместо перезаписи (со всеми возможными проблемами кэширования сервера / браузера).

...