随机图像选择器PHP

时间:2008-11-11 11:43:18

标签: php

$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数组提供的图像列表中进行选择。但是,我无法使用除“Array”之外的任何内容填充$ boxes数组。谁能告诉我为什么?非常感谢任何帮助

更新

我现在正在使用下面的代码,只要遇到空元素,它就会中断。除非我非常错误,否则不应该像那样拼凑破洞?

$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 个答案:

答案 0 :(得分:4)

这可能是一种更好的方式:

foreach (array_rand($images, 5) as $key) {
    $boxes[] = $images[$key];
}

答案 1 :(得分:2)

稍微偏离主题,但在这种情况下(从6个列表中挑选5个项目)只是为了选择一个元素并从原始数组中丢弃它,然后使用原始文件?这也将确保您不会在结果数组中获得重复。

我意识到原件中你可能有超过6件物品,并且可能需要少于5件物品,但我特别谈到发布的例子。

答案 2 :(得分:0)

array_splice()返回一个数组。

您可以尝试这样的事情:

while($i<5)
{
        $rand = rand(0,(sizeof($images)-1));
        $boxes[$i] = $images[$rand];
        $i++;
}