【发布时间】:2018-04-01 09:58:20
【问题描述】:
我正在尝试从我的网站上的一个目录中显示一定数量的随机图像而不显示重复。
我发现了这个问题: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 的目录并自动生成数组
我确实在Show Random images from a folder without repeating using JS or PHP 上尝试了 Michal Robinsons 的回答,但由于某种原因无法打印任何内容:
$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}' />";
}
也许我错过了什么?
任何指针都会很棒。
非常感谢
【问题讨论】:
-
您确定
/public/directory/{$image_name}是正确的路径吗? -
您好,Arkadi,感谢您的回复。我确实在我的网站上使用了我自己的图像路径,我的问题中的代码只是取自引用的帖子。
-
@FredBentley 您能否提供有关您的设置的更多详细信息?你在哪里上传目录?可能是
ls或dir显示图像名称和路径? -
在
foreach之前写上print_r($all_images); die();并检查打印的内容 -
我更新了上面的第二个代码块,以显示我的图像在 /images/photos/ 中目前有 70 张图像,例如 mywebsite.com/images/photos/55v4423097ww6.jpg 就是其中一张。我尝试了你的建议 Arkadi,但它似乎杀死了脚本。可能与 $images = array();代码中不再引用?代码后面的 $image 也应该是 $images 吗?
标签: php image random duplicates