如何显示随机目录中的随机图像

时间:2018-11-13 23:58:02

标签: php image random directory

我正在尝试从随机目录中选择随机图像。我使函数可以获取随机目录,而另一个函数可以从该目录获取随机图像。好的,但无法正常工作,它会获得随机目录并从另一个目录获得随机图像

<?php

function showRandomDir()
    {
    $files = glob('images/portfolio/*/', GLOB_ONLYDIR);
    shuffle($files);
    $files = array_slice($files, 0, 1);
    foreach($files as $file)
        {
        return $file;
        }
    }

function rotate2()
    {
    $list = scandir(showRandomDir());
    $fileRotateList = array();
    $img = '';
    foreach($list as $fileRotate)
        {
        if (is_file(showRandomDir() . htmlspecialchars($fileRotate)))
            {
            $ext = strtolower(pathinfo($fileRotate, PATHINFO_EXTENSION));
            if ($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png')
                {
                $fileRotateList[] = $fileRotate;
                }
            }
        }

    if (count($fileRotateList) > 0)
        {
        $imageNumber = time() % count($fileRotateList);
        $img = showRandomDir() . urlencode($fileRotateList[$imageNumber]);
        }

    return $img;
    }

1 个答案:

答案 0 :(得分:2)

rotate2()函数的开头,您调用showRandomDir()以获取随机目录的内容:

$list = scandir(showRandomDir());

但是最后,您再次调用showRandomDir(),因此您将获得另一个随机目录。
(嗯,这是一个 new ,可能有所不同,但可以随机相同。)

$img = showRandomDir() . urlencode($fileRotateList[$imageNumber]);

您需要将第一个调用保存到变量中,然后重用该变量,而不是第二次调用showRandomDir()

$dir = showRandomDir();
$list = scandir($dir);
// ... the rest of the code in between
$img = $dir . urlencode($fileRotateList[$imageNumber]);