我有以下php脚本显示目录中的所有图像
<?php
$images = glob($dirname."*.jpg");
foreach($images as $image) {
echo '<img src="'.$image.'" height ="400"/><br />';
}
?>
我想修改它,以便当您访问该页面时,它会在顶部显示最后修改的图像。有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
您可以使用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 />';
}
答案 1 :(得分:0)
您需要分两步执行: (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 />';
}