从文件夹显示随机图像url


display random image url from folder

我有一个php代码,它使用文件夹中的每个图像并在我的页面上响应url。

我需要帮助的是使PHP代码随机化每次加载页面的url列表。

我的代码是:

<?php 
 if ($handle = opendir('images')) {
   while (false !== ($file = readdir($handle)))
      {
          if ($file != "." && $file != "..")
      {
            $thelist .= '<div data-delay="5"><img src="images/'.$file.'"></div>';
          }
       }
  closedir($handle);
  }
?>
<?=$thelist?>

多谢

最简单的解决方案是将所有文件名放入一个数组中,然后使用shuffle()将其混合。然后可以遍历数组并输出图像。它应该看起来像这样:

<?php 
 $thelist = "";
 if ($handle = opendir('images')) {
   $images = array();
   while (false !== ($file = readdir($handle))) {
      if ($file != "." && $file != "..") {
            array_push($images, 'images/'.$file);
      }
   }
   closedir($handle);
   shuffle($images);
   foreach ($images as $image) {
      $thelist .= '<div data-delay="5"><img src="'.$image.'"></div>';
   }
   echo $thelist;
 }
?>

通过使用glob()而不是opendir(),您可以显着缩短代码,因为glob()返回一个数组,然后您只需要对该数组进行洗牌。

将文件链接放入数组中,并使用shuffle()函数对其进行洗牌

<?php 
if ($handle = opendir('images')) {
    $fileTab = array();
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $fileTab[] = $file; 
        }
    }
    closedir($handle);
    shuffle($fileTab);
    foreach($fileTab as $file) {
        $thelist .= '<div data-delay="5"><img src="images/'.$file.'"></div>';
    }
}
?>
<?=$thelist?>

不直接在while循环中创建div,而是只使用它将所有url存储在Array中。然后打乱该数组,并使用foreach循环来填充$thelist。

为什么不用glob()呢?

$images = glob('images/*.{jpg,png,gif}', GLOB_BRACE);
shuffle($images);
foreach($images as $image) {
    echo '<div data-delay="5">
              <img src="', $image ,'">
          </div>';
}