我有一个包含1000多张图片和一段代码(通过codaddict)的目录,它只选择前10并显示它:
<?php
foreach (array_slice(glob("/directory/*.jpg"),0,10) as $path)
?>
确定这有效,但我需要选择10个RANDOM图像,而不是前10个
是的,我可以先使用随机播放,然后使用切片,但是使用1000+(或10k +)图像时,仅为10张图像重新排列长阵列是不明智的,或者可能是?
另外,第二个问题是这不仅仅是一个1000+图像的文件夹,我也需要在其他文件夹中使用这个脚本,其中一些只有1个图像,所以我不想看到如果文件夹中的图像少于10张,则会出现错误
我在php手动代码中看到了2个随机项目,但我不知道文件夹中有多少图像--1,10,10k ......你看到了问题
<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>
谢谢!
答案 0 :(得分:1)
function imageGlobber($myDir, $imgCount) {
$globVar = glob($myDir."/*.jpg");
$imgCount = ($imgCount > count($globVar)) ? $imgCount : count($globVar);
$randKeys = array_rand($globVar, $imgCount);
$retArray = array();
foreach($randKeys as $key)
array_push($retArray, $globVar[$key]);
return $retArray;
}
我认为这就是你要找的东西。
编辑:也添加了重复处理。
编辑:提高了效果。