从文件夹中显示随机图像网址

时间:2013-01-12 23:19:10

标签: php

我有一个PHP代码,它使用文件夹中的每个图像并回显我页面上的网址。

我需要帮助的是让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?>
非常感谢

4 个答案:

答案 0 :(得分:2)

最简单的解决方案是将所有文件名放入一个数组中,然后使用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()会返回一个数组,然后您只需要对该数组进行随机播放。

答案 1 :(得分:0)

将您的文件链接放入数组中并使用函数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?>

答案 2 :(得分:0)

不是直接在while循环中创建div,而是仅使用它来存储Array中的所有url。然后shuffel那个数组,并使用foreach循环来填充$ thelist。

答案 3 :(得分:0)

为什么不使用glob()

$images = glob('images/*.{jpg,png,gif}', GLOB_BRACE);

shuffle($images);

foreach($images as $image) {
    echo '<div data-delay="5">
              <img src="', $image ,'">
          </div>';
}