随机选择一个文件


Select a file at random

我写了一个脚本,每天通过电子邮件发送随机图像给我自己,我想做的是设置一个变量$image等于一个'随机'图像在一个名为/images的目录。

图片是什么并不重要。它不需要是真正随机的,它可以在日期,图像大小,字母顺序等方面完成。

图片格式为。jpg、。jpeg、。png、。gif。

将随机图像分配给$image变量的最佳方法是什么?

 $images = array('image1.png', 'image2.png', 'image3.jpg');
 $selectedimage = rand(0,count($images));
 $image = $images[$selectedimage];

这样做可能会奏效。

$files = scandir('/images');
$images = array();
foreach ($files as $file) {
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    switch($ext) {
    case 'jpg':
    case 'png':
    case 'gif':
        $images[] = $file;
        break;
    }
}
$image = $images[array_rand($images)];

如果我这么做的话,我会把它做得更像一副牌,其中每一张牌都将被使用一次,然后重新开始使用完整的牌组。简单地抽取一张随机图像就可以让相同的图像被连续地返回。

从一副牌开始,从52张牌中任意选一张。将第52张牌与已经抽到的牌互换,并将抽到的牌放回52号位置(牌组底部)

下一步抽1-51张牌。把抽出的牌换成51号牌。

抽1-50张牌,将抽到的牌换成50张牌

重复直到只有1张牌,然后当1号牌与1号牌交换时,将拾取计数重置为52。

重新开始,选择牌1-52,并交换牌#52,然后1-51,1-50…