我试图从目录中获取上传的图片并随机播放他们的订单。我能够很容易地获取图像并按顺序显示它们,但似乎无法让它们洗牌!
<?php
$imagesDir = 'uploads/';
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$randomImage = $images[array_rand($images)];
?>
<div id="images">
<?php
$print_r($images);
$shuffleimages = shuffle($images);
foreach($shuffleimages as $shuffleimage) {
echo '<img src="'.$shuffleimage.'" />';
}
?>
</div>
当我打印$images
时,我得到:
Array (
[0] => uploads/image1.jpg
[1] => uploads/image2.jpg
[2] => uploads/image3.jpg
[3] => uploads/image4.jpg
[4] => uploads/image5.jpg
)
我不知道它是否与glob函数有关或者我是如何更普遍地检索图像的?我已经查看了其他关于SO的问题,但似乎无法看到我做的不同/错误!
答案 0 :(得分:4)
你向前迈出了一步......没有必要重新分配$images
...你的$shuffleimages
只会返回true
或false
<的布尔值/ p>
<?php
shuffle($images); // $images will be shuffled.
foreach($images as $shuffleimage) {
echo '<img src="'.$shuffleimage.'" />';
}
?>
答案 1 :(得分:0)
您也可以使用sacndir
并使用sorting_order
参数对文件进行排序。