Случайный выбор изображений PHP - PullRequest
2 голосов
/ 11 ноября 2008
$images = array();
$images[0][0] = "boxes/blue.jpg";
$images[0][1] = "blah.html";
$images[1][0] = "boxes/green.jpg";
$images[1][1] = "blah.html";
$images[2][0] = "boxes/orange.jpg";
$images[2][1] = "blah.html";
$images[3][0] = "boxes/pink.jpg";
$images[3][1] = "blah.html";
$images[4][0] = "boxes/purple.jpg";
$images[4][1] = "blah.html";
$images[5][0] = "boxes/red.jpg";
$images[5][1] = "blah.html";
$images[6][0] = "boxes/yellow.jpg";
$images[6][1] = "blah.html";

$i = 0;


*echo "<a href='" . $images[0][1] . "'><img src='" . $images[0][0] . "' /></a>";

$boxes = array();
while($i<5)
{
    $rand = rand(0,(sizeof($images)-1));
    //echo $rand;
    $slice = array_splice($images, $rand);
    $boxes[$i] = $slice;
    $i++;
}*

Я пытаюсь выбрать случайное средство выбора изображений из списка изображений, предоставленного массивом $ images. Однако я не могу заполнить массив $ boxes чем-либо, кроме «Array». Кто-нибудь может сказать мне, почему? Любая помощь очень ценится

UPDATE

Я сейчас использую код ниже, и он ломается всякий раз, когда сталкивается с пустым элементом. Если я не очень сильно ошибаюсь, разве не нужно так склеивать дырки?

$rand = rand(0,(sizeof($images)));
array_splice($images, $rand);
$i = 0;
while($i<5)
{
    echo "<a href='" . $images[$i][1] . "'><img src='" . $images[$i][0] . "' /></a>";
    $i++;
}

Ответы [ 3 ]

4 голосов
/ 11 ноября 2008

Это может быть лучший способ сделать это:

foreach (array_rand($images, 5) as $key) {
    $boxes[] = $images[$key];
}
2 голосов
/ 11 ноября 2008

Немного не по теме, но не будет ли проще в этом случае (выбрать 5 элементов из списка из 6), просто выбрать один элемент и отбросить его из исходного массива, а затем использовать оригинальный? Это также гарантирует, что вы не получите дубликаты в результирующем массиве.

Я понимаю, что у вас может быть более 6 элементов в оригинале, и вам может понадобиться менее 5, но я говорю конкретно о приведенном примере.

0 голосов
/ 11 ноября 2008

array_splice () возвращает массив.

Вы можете попробовать что-то вроде этого:

while($i<5)
{
        $rand = rand(0,(sizeof($images)-1));
        $boxes[$i] = $images[$rand];
        $i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...