Я использую эту часть 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"/>';
}
?>
Это также используется с помощью 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="..."/>';
}
}
//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);
Взгляните на кусок кода, используемый в проекте. и вы можете настроить это в соответствии с вашими требованиями.
$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 и получить верхнюю часть ваших изображений.
Мне нравится foreach
и array_slice
но здесь в альтернативе:
array_multisort(array_map('filemtime', $files=glob("images/*.*")), SORT_DESC, $files);
for($i=0; $i<10; $i++) {
$image = $files[$i];
}