【发布时间】:2013-02-01 13:38:15
【问题描述】:
我有一个包含 1000 多个图像和一段代码(由 codaddict 编写)的目录,它只选择前 10 个并显示它:
<?php
foreach (array_slice(glob("/directory/*.jpg"),0,10) as $path)
?>
这行得通,但我需要选择 10 个随机图像,而不是前 10 个
是的,我可以先使用 shuffle,然后再使用 slice,但是对于 1000+(或 10k+)张图像,只为 10 张图像随机播放长数组并不明智,或者可能是这样?
另外,第二个问题是这不仅仅是一个包含 1000 多张图片的文件夹,我也需要在其他文件夹中使用这个脚本,其中一些只有一张图片,所以我不想看到如果文件夹中的图片少于 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";
?>
谢谢!
【问题讨论】:
-
是时候为图像管理考虑数据库解决方案了 - 具有 10k+ 文件的目录设计速度很慢
-
这个问题有一个 PHP 数组函数的大 O 值列表。或许可以帮到你:stackoverflow.com/questions/2473989/…
-
只有少数目录有超过 1k 的图像,大部分它们将包含大约 100 个图像,但是因为我会为 100 或 1000 个图像使用相同的代码,所以我认为 shuffle int 很棒,100 是好的,但 1000 不是 :)