我有以下PHP脚本显示目录中的所有图像PHP展现在目录中的所有图像和排序最后修改
<?php
$images = glob($dirname."*.jpg");
foreach($images as $image) {
echo '<img src="'.$image.'" height ="400"/><br />';
}
?>
我想修改此,这样当您访问的页面也显示最后修改图像在上面。有人能帮助我,我会怎么做呢?
我有以下PHP脚本显示目录中的所有图像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");
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 />';
}
传递filemtime()作为uksort()的回调将无法自行工作。需要一个小型的实用函数来解释结果并返回一个通知uksort()的整数,例如:“函数cmp_function [callback]应该接受由数组键填充的两个参数,比较函数必须返回一个小于,如果第一个参数被认为分别小于,等于或大于第二个参数,则等于或大于零。“ – Nathan
@nathan:绝对是对的,这里是我让PHP和Python使用'key'关于排序函数的混合;在PHP中,它当然是指数组的键。谢谢。 –
嗨@LucasJones,你的实现工作完美!无论如何,我可以直接与您联系以进一步跟进吗? – user1539206
你需要两个步骤来执行: (一)阅读目录内容,并注意最后修改信息 (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 />';
}
参见此功能:http://php.net/manual/en/function.filemtime.php –
重复的的[水珠() - 按日期排序](HTTP://计算器。 COM/q/124958/938236) –