用于显示文件夹中图像的PHP脚本

时间:2015-03-02 10:01:44

标签: php image

这是一个显示文件夹中图像的脚本。但有没有办法可以先显示最新图像?而不是相反。

$images = glob('*.{gif,png,jpg,jpeg}', GLOB_BRACE); // formats to look for
$num_of_files = 2; // number of images to display

foreach($images as $image)
{
     $num_of_files--;

     if($num_of_files > -1) // this made me laugh when I wrote it
       echo "<b>".$image."</b><br>Created on ".date('D, d M y H:i:s', filemtime($image)) ."<br><img src="."'".$image."' style='width: 95%'"."><br><br>" ; // display images
     else
       break;
   }

2 个答案:

答案 0 :(得分:3)

您需要将图像放入数组中,然后按上次修改后排序。

这样的事情:

$imagesToSort = glob('*.{gif,png,jpg,jpeg}');
    usort($imagesToSort, function($a, $b) {
    return filemtime($a) < filemtime($b);
});

答案 1 :(得分:0)

glob()并不关心哪个文件是第一个还是最后一个。它所关心的只是文件名。因此,您需要获取所有图像,然后您可以尝试使用反向字母顺序获取这些图像:

$images = glob('*.{gif,png,jpg,jpeg}', GLOB_BRACE);

$count = count($images) - 1;
$toShow = 2; // how many images you want to show

for ($i = 0; $i < $toShow; $i++, $count--) {
    echo "<b>".$images[$count]."</b><br>Created on ".date('D, d M y H:i:s', filemtime($images[$count])) ."<br><img src="."'".$images[$count]."' style='width: 95%'"."><br><br>" ;
}

但是,如果您希望按时间顺序,则需要foreach()完成所有这些操作并按filemtime对其进行排序。 This answer shows how to do it with usort()'s callback