次のphpスクリプトで、ディレクトリ内のすべての画像を表示します
<?php
$images = glob($dirname."*.jpg");
foreach($images as $image) {
echo '<img src="'.$image.'" height ="400"/><br />';
}
?>
これを変更して、ページにアクセスすると、最後に変更された画像が一番上に表示されるようにします。誰かが私がそれを行う方法を教えてもらえますか?
次のphpスクリプトで、ディレクトリ内のすべての画像を表示します
<?php
$images = glob($dirname."*.jpg");
foreach($images as $image) {
echo '<img src="'.$image.'" height ="400"/><br />';
}
?>
これを変更して、ページにアクセスすると、最後に変更された画像が一番上に表示されるようにします。誰かが私がそれを行う方法を教えてもらえますか?
関数を使用してfilemtime()
、各ファイルの変更日を見つけることができます。uksort()
これは、ループで処理される前に配列をソートするためのキーとして使用できます。
これにより、配列はファイル変更時間の昇順、つまり mtime が最も古いものから順に配置されます。その後、配列を反転するか、逆方向に反復処理できます。
<?php
function mtimecmp($a, $b) {
$mt_a = filemtime($a);
$mt_b = filemtime($b);
if ($mt_a == $mt_b)
return 0;
else if ($mt_a < $mt_b)
return -1;
else
return 1;
}
$images = glob($dirname."*.jpg");
usort($images, "mtimecmp");
$images=array_reverse($images);
foreach ($images as $image) {
echo '<img src="'.$image.'" height ="400"/><br />';
}
?>
(後方に反復する方が効率的です...)
// ...
usort($images, "mtimecmp");
for ($i = count($images) - 1; $i >= 0; $i--) {
$image = $images[$i];
echo '<img src="'.$image.'" height ="400"/><br />';
}
次の 2 つの手順で実行する必要があります: (a) ディレクトリの内容を読み取り、最終変更情報をメモします (b) 結果をレンダリングします
$images = glob($dirname . '*.jpg');
$mostrecent = 0;
$mostrecentimg = null;
// scan
foreach ($images as $image) {
$imagemod = filemtime($image);
if ($mostrecent < $imagemod) {
$mostrecentimg = $image;
$mostrecent = $imagemod;
}
}
// display
echo '<img src="' . $mostrecentimg . '" height="400"/><br />';
foreach($images as $image) {
// the most recent was already output above so skip remainder this iteration
if ($image == $mostrecentimg) continue;
echo '<img src="' . $image . '" height="400"/><br />';
}