0

フォルダー内のすべての画像を使用し、ページの URL をエコーする 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

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()代わりにasを使用するとopendir()、コードを大幅に短縮できます。 asglob()は配列を返し、それをシャッフルするだけで済みます。

于 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 に答える