Отображение последних 10 изображений из файлового каталога

0

Я использую эту часть 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
    откуда вы знаете, что за «последние» 10 вы не проверяете даты или не сортируете по дате или ..
  • 1
    Как вы определяете «последний»? Вы пробовали сортировку и для перехода от 1 до 10?
Теги:

4 ответа

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="..."/>';
    }
}
  • 0
    сработало отлично, спасибо!
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);
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 и получить верхнюю часть ваших изображений.

0

Мне нравится foreach и array_slice но здесь в альтернативе:

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню