Php 从目录中选择随机文件
我正在尝试建立一个网站,用户可以提交照片,然后在另一个页面上一张一张地随机查看其他照片。我有一个名为“上传”的目录,在那里提交图片。我在读取文件中的图片时遇到问题。我只是想从上传目录中随机选择一张图片,并将其显示在页面上。如有任何建议,我们将不胜感激 您可以使用获取目录中的所有文件,然后从该数组中获取一个随机元素。这样的函数将为您提供:Php 从目录中选择随机文件,php,Php,我正在尝试建立一个网站,用户可以提交照片,然后在另一个页面上一张一张地随机查看其他照片。我有一个名为“上传”的目录,在那里提交图片。我在读取文件中的图片时遇到问题。我只是想从上传目录中随机选择一张图片,并将其显示在页面上。如有任何建议,我们将不胜感激 您可以使用获取目录中的所有文件,然后从该数组中获取一个随机元素。这样的函数将为您提供: function random_pic($dir = 'uploads') { $files = glob($dir . '/*.*'); $f
function random_pic($dir = 'uploads')
{
$files = glob($dir . '/*.*');
$file = array_rand($files);
return $files[$file];
}
我对它做了一些调整,使用数组从一个目录中获取多个随机文件
<?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");
?>
您还可以使用loop来获取值。或者您可以使用代替glob(),因为它更快。这一行代码显示目标目录中的一个随机图像
<img src="/images/image_<?php $random = rand(1,127); echo $random; ?>.png" />
.png”/>
目标目录:/images/
图像前缀:图像
目录中的图像数:127
缺点
- 图像必须按顺序命名(例如
,image\u 1.png
,image\u 2.png
,等等)image\u 3.png
- 您需要提前知道目录中有多少图像
备选方案 也许有一种简单的方法可以让它在任意的图像名和文件数下工作,这样你就不必重命名或计算你的文件 未经检验的想法:
/>
shuffle()
带有scanDir()
rand(1,scanDir.length)
opendir()
和glob()
被称为两个不同的函数。请参见。这里使用的是glob()
;请参见。我的意思显然是,使用opendir方法(opendir,然后遍历文件)比使用opendir函数更快。我包含的链接解释了opendir()返回的内容。