我试图找出使用PHP从我网站上的多个子文件夹中提取随机图像的最佳方法。我会使用RecursiveDirectoryIterator迭代子文件夹并提取图像,但我想知道如何处理随机化以及如何有效地完成它。关于如何解决这个问题的任何建议?
答案 0 :(得分:3)
为迭代端点创建一个随机数(同时$ i <10)。在此之前,您可以创建另一个随机会话来选择目录。
将所有图像读入数组,然后选择随机索引。
答案 1 :(得分:3)
function get_images($root) {
$r = array();
foreach(glob("$root/*") as $n) {
if (is_dir($n)) {
$r = array_merge($r, get_images($n));
} else {
$r[] = $n;
}
}
return $r;
}
$files = get_images('foo');
shuffle($files);
echo $files[0];
答案 2 :(得分:0)
将所有完整$path
加载到$array
并选择mt_rand(0, count($array)-1)
。
您可能希望缓存列表,只要它不会更改,以避免重新遍历您的目录。