我试图在我的网站上的一个目录中显示一定数量的随机图像,而不显示重复项。
我发现了这个问题:Display 2 random pictures PHP with no duplicates部分回答了我的问题:
<?php
$pics = array('image1.jpg', 'image2.jpg', 'image3.jpg', 'image4.jpg');
$images = array_rand($pics, 2);
?>
<img src="images/<?php echo $pics[$images[0]]; ?>" />
<img src="images/<?php echo $pics[$images[1]]; ?>" />
我遇到的问题是图像上传到具有完全不同/随机名称的文件夹,例如1a2265fg65444.jpg 55v4423097ww6.jpg等,所以我无法手动将它们添加到$ pics数组中。我需要以某种方式刮取目录* .jpg并自动生成数组
我确实尝试过Michal Robinsons在Show Random images from a folder without repeating using JS or PHP上的回答但由于某种原因无法打印任何东西:
$all_images = glob("/images/photos/{*.jpg}", GLOB_BRACE);
shuffle($all_images);
$images = array();
foreach ($all_images as $index => $image) {
if ($index == 15) break; // Only print 15 images
$image_name = basename($image);
echo "<img src='/images/photos/{$image_name}' />";
}
也许我错过了什么?
任何指针都会非常棒。
非常感谢
答案 0 :(得分:3)
试试这个
$scan = scandir("/images/photos/");
shuffle($scan);
$r = rand(2, count($scan)); // maybe (count($scan) - 1)
printf("<img src='/images/photos/%s' />", basename($scan[$r]));
答案 1 :(得分:0)
感谢Aron,但我设法通过更改来修复它:
glob("/images/photos/ to
glob("images/photos/
为了使事情进一步复杂化,我只是意识到我需要从第一个文件夹中显示1个图像,然后从第2个文件夹中显示另一个图像,并重复此约5次,仍然没有显示任何重复:/这是至于我有,但似乎正在挖掘一个不起作用的更大的洞,因为我被困在了foreach ......:
$all_images1 = glob("images/photos/{*.jpg}", GLOB_BRACE);
$all_images2 = glob("images/photos1/{*.jpg}", GLOB_BRACE);
shuffle($all_images1);
shuffle($all_images2);
$images1 = array();
$images2 = array();
$class = 1;
foreach ($all_images1 as $index1 => $image1) {
if ($index1 == 10) break; // Only print 15 images
$image_name1 = basename($image1);
echo "<img src='/images/photos/{$image_name1}' class='image".$class++."' /> <img src='/images/photos1/{$image_name2}' class='image".$class++."' />";
}
我是否朝错误的方向去做?
谢谢泰德