我使用这段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"/>';
}
?>
答案 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)
我喜欢foreach
和array_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);