使用来自1000多张图像的glob()的10个随机图像

时间:2013-02-16 19:07:36

标签: php shuffle glob slice

我有一个包含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";
?>

谢谢!

1 个答案:

答案 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;
}

我认为这就是你要找的东西。

编辑:也添加了重复处理。

编辑:提高了效果。