$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++;
}
答案 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++;
}