我正在尝试从随机目录中选择随机图像。我使函数可以获取随机目录,而另一个函数可以从该目录获取随机图像。好的,但无法正常工作,它会获得随机目录并从另一个目录获得随机图像
<?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;
}
答案 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]);