0

頭を悩ませている質問があります。ディレクトリからすべての画像を一覧表示し、ページに書き込むこの PHP スクリプトがあります。

<?PHP
    $directory="photos";
    $sortOrder="newestFirst";

    $results = array();
    $handler = opendir($directory);

    while ($file = readdir($handler)) {
        if ($file != '.' &&
            $file != '..' &&
            $file != "robots.txt" &&
            $file != ".htaccess") {

            $currentModified = filectime($directory."/".$file);
            $file_names[] = $file;
            $file_dates[] = $currentModified;
        }
    }
    closedir($handler);

    //Sort the date array by preferred order
    if ($sortOrder == "newestFirst"){
        arsort($file_dates);
    } else {
        asort($file_dates);
    }

    //Match file_names array to file_dates array
    $file_names_Array = array_keys($file_dates);
    foreach ($file_names_Array as $idx => $name) $name=$file_names[$name];
    $file_dates = array_merge($file_dates);

    $i = 0;

    //Loop through dates array and then echo the list
    foreach ($file_dates as $$file_dates){
        $date = $file_dates;
        $j = $file_names_Array[$i];
        $file = $file_names[$j];
        $i++;

        echo  "<img src=photos/$file>\n";
    }
?>

100 個のファイルを含むフォルダーで、一度に 20 個のファイルのみをランダムに一覧表示する、つまり、ページを更新するたびに 20 個のランダムな画像が読み込まれるとしたら、どうすればよいでしょうか?

どうすればできますか?

4

2 に答える 2

0

複数のページが必要ではなく、ページの更新のみが必要な場合は、次のように簡単に行うことができます。

  1. ディレクトリから画像のリストを作成し、それらを配列に入れます。

  2. 配列のサイズ内で 20 個の乱数を生成します。

  3. 取得したばかりのランダム キーから生成された画像のみを出力します。

コードは簡単に書けるはずなので、例は掲載しません。

于 2013-01-18T15:39:31.960 に答える
0

あなたはこれを試すことができます-

$dir    = '/tmp';
$files = scandir($dir);
$rand_keys = array_rand($files, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
于 2013-01-18T15:45:40.730 に答える