首页 > 解决方案 > PHP - 以随机顺序显示目录文件夹

问题描述

该代码完美运行。只是不知道如何让它在不使用 Jquery 的情况下随机显示内容。

让它显示当前目录中的随机图像,但不确定如何让目录随机显示。

$dir = 'img/series_thumbnail/';
$dh = opendir($dir);
while (($fileName = readdir($dh)) !== false) {
  if (!in_array($fileName, array('.', '..'))) {
    $images = glob($dir . $fileName . '/*.{jpg,jpeg,png,gif}', GLOB_BRACE);
    $imgMax = count($images)-1;
    $imgNum = rand(0, $imgMax);
    $imgUrl = $images[$imgNum];
    echo '<li>';
    echo '<img src="' . $imgUrl . '"/>';
    echo '<div class="info"><p>' . $fileName . '</p></div>';
    echo '</li>';
  }
}

谢谢你。

编辑

弄清楚了!谢谢大家的帮助。

$dir = glob("img/series_thumbnail/*", GLOB_ONLYDIR);
shuffle($dir);
foreach ($dir as $folder) {
  if (!in_array($folder, array(".", ".."))) {
    $folderName = basename($folder).PHP_EOL;
    $images = glob($folder . "/*.{jpg,jpeg,png,gif}", GLOB_BRACE);
    shuffle($images);
    echo "<li>";
    echo '<img src="' . $images[0] . '"/>';
    echo "<div class='info'><p>" . $folderName . "</p></div>";
    echo "</li>";
  }
}

标签: phprandomdirectory

解决方案


如果要显示每个目录中的单个随机图像,并且目录以随机顺序排列,则可以使用以下代码:

$dir = 'img/series_thumbnail/';
$directories = glob("$dir*", GLOB_ONLYDIR);
shuffle($directories);
foreach ($directories as $directory) {
    $images = glob($dir . $directory. '/*.{jpg,jpeg,png,gif}', GLOB_BRACE);
    $imgMax = count($images)-1;
    $imgNum = rand(0, $imgMax);
    $imgUrl = $images[$imgNum];
    echo '<li>';
    echo '<img src="' . $imgUrl . '"/>';
    echo '<div class="info"><p>' . $fileName . '</p></div>';
    echo '</li>';
}

推荐阅读