0

我有一个包含 1000 多个图像和一段代码(由 codaddict 编写)的目录,它只选择前 10 个并显示它:

<?php
foreach (array_slice(glob("/directory/*.jpg"),0,10) as $path)
?>

好的,这可行,但我需要选择 10 个随机图像,而不是前 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";
?>

谢谢!

4

1 回答 1

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

我想这就是你要找的。

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

编辑:改进的性能。

于 2013-02-16T19:18:41.293 回答