显示文件目录中的最新10个图像

时间:2015-02-16 19:50:01

标签: php

我使用这段php从我的目录中提取最新的图像,但我只想显示最新的10个上传而不是所有内容。

任何人都知道如何更改代码以便它执行此操作?谢谢!

<?php
   $files = glob("images/*.*");
   for ($i=1; $i<count($files); $i++){

      $image = $files[$i];
      echo '<img src="'.$image .'" alt="Random image" id="lay"/>';
   }
?>

4 个答案:

答案 0 :(得分:1)

还有这个使用array_slice()

if($images = array_slice(glob("images/*.*")){
    //sort
    usort($images, create_function('$a,$b', 'return filemtime($a) - filemtime($b);'));
    //loop 10
    foreach (array_slice($images, 0, 10) as $image) {
       echo '<img src="'.$image.'" alt="..."/>';
    }
}

答案 1 :(得分:0)

查看项目中使用的代码片段。你可以根据自己的要求进行调整。

$folder = 'images/';
$filetype = '*.*';
$files = glob($folder.$filetype);
$count = count($files);

$sortedArray = array();
for ($i = 0; $i < $count; $i++) {
    $sortedArray[date ('YmdHis', filemtime($files[$i]))] = $files[$i];
}

ksort($sortedArray);
echo '<table>';
foreach (array_slice($sortedArray), 0, 10) as &$filename) {
    #echo '<br>' . $filename;
    echo '<tr><td>';
    echo '<a name="'.$filename.'" href="#'.$filename.'"><img src="'.$filename.'" /></a>';
    echo substr($filename,strlen($folder),strpos($filename, '.')-strlen($folder));
    echo '</td></tr>';
}
echo '</table>';

如果你想让最新的图像在顶部而不是在底部,那么改变这一行:

ksort($sortedArray);

到此:

krsort($sortedArray);

更新应用限制:

要应用限制,您只需在最终foreach下应用计数器或数组切片功能,并获得图像的顶部。

答案 2 :(得分:0)

我喜欢foreacharray_slice,但在其他地方:

array_multisort(array_map('filemtime', $files=glob("images/*.*")), SORT_DESC, $files);

for($i=0; $i<10; $i++) {
    $image = $files[$i];
}

答案 3 :(得分:0)

//Get last 10
$limit = 10;
$arr = glob('/dir/dir/*.{jpg,jpeg,JPG,JPEG}', GLOB_NOESCAPE|GLOB_BRACE);
return array_slice($arr, (count($arr)-$limit), $limit);