从目录中选择随机文件

时间:2010-12-18 15:57:17

标签: php

我正在尝试创建一个用户可以提交照片的网站,然后在另一个页面上逐个随机查看其他照片。我有一个名为“uploads”的目录,其中提交了图片。我无法从文件中读取图片。我只是想从目录上传中随机选择一张图片并将其显示在页面上。任何建议赞赏。

4 个答案:

答案 0 :(得分:64)

您可以使用glob获取目录中的所有文件,然后从该数组中获取随机元素。像这样的函数可以帮到你:

function random_pic($dir = 'uploads')
{
    $files = glob($dir . '/*.*');
    $file = array_rand($files);
    return $files[$file];
}

答案 1 :(得分:6)

我已经把它转过来从目录中使用数组获得多个随机文件。

<?php

function random_pic($dir)
{
 $files = glob($dir . '/*.jpg');
 $rand_keys = array_rand($files, 3);
 return array($files[$rand_keys[0]], $files[$rand_keys[1]], $files[$rand_keys[2]]);
}

// Calling function

list($file_1,$file_2,$file_3)= random_pic("images"); 

?>

您也可以使用循环来获取值。

答案 2 :(得分:0)

或者您可以使用opendir()代替glob(),因为它更快

答案 3 :(得分:0)

这一行代码显示目标目录中的一张随机图像。

<img src="/images/image_<?php $random = rand(1,127); echo $random; ?>.png" />

目标目录: /images/

图像前缀: image_

目录中的图像数: 127

https://perishablepress.com/drop-dead-easy-random-images-via-php/


缺点

  • 图像必须按顺序命名(例如image_1.pngimage_2.pngimage_3.png等)。

  • 您需要提前知道目录中有多少个图像。


替代

也许有一种简单的方法可以使用任意的图像名称和文件计数来实现此目的,因此您不必重命名或计算文件数。

未经验证的想法:

  • <img src=<?php $dir='/images/'; echo $dir . array_rand(glob($dir . '*.jpg')); ?> />

  • shuffle()

  • scanDir()rand(1,scanDir.length)