2015-02-16 2 views
0

Я использую этот фрагмент php, чтобы вытащить последние изображения из моего каталога, но я хочу отображать последние 10 загрузок вместо всего.Отображение последних 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 ты dont проверить даты или отсортировать по дате или .. –

+1

Как вы определяете "последние"? Вы пробовали что-то вроде и для перехода от 1 до 10? – Niols

ответ

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

работал отлично, спасибо! – kreemers

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); 

Update применяются предел:

Чтобы применить ограничение, вы можете упростить y примените функцию count или array slice под конечным 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]; 
} 
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); 
Смежные вопросы