0

我有一个 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?>

非常感谢

4

4 回答 4

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()返回一个数组,然后你只需要打乱那个。

于 2013-01-12T23:23:56.557 回答
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?>
于 2013-01-12T23:24:36.987 回答
0

与其在 while 循环中直接创建 div,不如将其仅用于将所有 url 存储在一个数组中。然后打乱该数组,并使用 foreach 循环来填充 $thelist。

于 2013-01-12T23:24:44.147 回答
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>';
}
于 2013-01-12T23:29:36.900 回答