通过PHP将目录中的照片随机化
我有下面的代码,它可以在每次单击刷新按钮时将我的“照片”文件夹中的照片随机化。我知道这可能不是最有效的编码方式,但就我而言,它是有效的。我正在寻找帮助,关于我的PHP代码,这将使照片更随机。我目前有200多张图片在文件夹中,经常会得到比我想要的更多的重复图片。我可以对其进行哪些更改?(注:忽略我正在使用的AJAX/JavaScript)通过PHP将目录中的照片随机化,php,random,photo,Php,Random,Photo,我有下面的代码,它可以在每次单击刷新按钮时将我的“照片”文件夹中的照片随机化。我知道这可能不是最有效的编码方式,但就我而言,它是有效的。我正在寻找帮助,关于我的PHP代码,这将使照片更随机。我目前有200多张图片在文件夹中,经常会得到比我想要的更多的重复图片。我可以对其进行哪些更改?(注:忽略我正在使用的AJAX/JavaScript) 图片! 正文{背景色:D3DFDE;} $(函数(){ $(“#我的按钮”)。单击(函数(){ $(“#main”).load(“index.php”);
图片!
正文{背景色:D3DFDE;}
$(函数(){
$(“#我的按钮”)。单击(函数(){
$(“#main”).load(“index.php”);
});
});
创作人:马特和乔
您可以执行以下操作:
提供变量$dirpath的目录完整路径
$image_source_array=scandir($dirpath);
sort($image_source_array);
使用mt\u rand
函数,最小值为0
最大值为count($image\u source\u array)-1
,并从数组访问该索引以获取图像名称
然后使用$dirpath/image名称访问图像,每次都会得到随机图像
创建这样的函数,这将是最短的方法
function randomimages() {
$dirname = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : './photos/';
$image_source_array = scandir($dirname);
sort($image_source_array);
$image_count = count($image_source_array) - 1;
$rand_index = mt_rand(3, $image_count);
//Starting with 3 because scandir returns directory also in the 2 indexes like '.' and '..'
$rand_image_path = $dirname . $image_source_array[$rand_index];
return $rand_image_path;
}
为了简单性和可重用性,您可能希望与以下一起使用:
使用:
$path = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : './photos/';
$num_images = isset($_REQUEST['num']) ? $_REQUEST['num'] : 1;
print implode('<br />', randomimages($path, $num_images));
$path=isset($\u请求['dir'])$_请求['dir']:'/照片/';
$num_images=isset($_请求['num'])$_请求['num']:1;
打印内爆(“
”,随机图像($path,$num_图像));
您应该忽略“.”目录是“…”也忽略了!我正在检查任何以“.”开头的条目:)是的,对不起,现在是早上…;)接受答案我相信它会用最少的代码解决你的问题。你可以在我下面的答案中找到最短的方法。如果你发现下面的答案有用,你可以“接受”它。
function randomimages() {
$dirname = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : './photos/';
$image_source_array = scandir($dirname);
sort($image_source_array);
$image_count = count($image_source_array) - 1;
$rand_index = mt_rand(3, $image_count);
//Starting with 3 because scandir returns directory also in the 2 indexes like '.' and '..'
$rand_image_path = $dirname . $image_source_array[$rand_index];
return $rand_image_path;
}
function randomimages($path, $num_images)
{
$images = array();
foreach (new RegexIterator(new DirectoryIterator($path),
'#\.(jpe?g|gif|png|bmp)$#i') as $file) {
$images[] = $file->getPathname();
}
shuffle($images);
return array_slice($images, 0, $num_images);
}
$path = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : './photos/';
$num_images = isset($_REQUEST['num']) ? $_REQUEST['num'] : 1;
print implode('<br />', randomimages($path, $num_images));