2016-07-04 4 views
-1

Как я могу получить последнее количество файлов X в каталоге на PHP?Получить последнее X количество файлов в каталоге

Я использую этот код для получения последнего файла, но как я могу получить последнее количество X файлов?

Мой код:

$path = "/path/test/"; 

$latest_ctime = 0; 
$latest_filename = '';  

$d = dir($path); 
while (false !== ($entry = $d->read())) { 
    $filepath = "{$path}/{$entry}"; 
    // could do also other checks than just checking whether the entry is a file 
    if (is_file($filepath) && filectime($filepath) > $latest_ctime) { 
     $latest_ctime = filectime($filepath); 
     $latest_filename = $entry; 
    } 
} 
+0

Что вы подразумеваете под последним «X» файлом? – Shank

+0

Получить последние 10 файлов, например –

+0

Я обновил ваш вопрос, чтобы использовать * n * вместо * x *: больше похоже на целое число. Также сделаны некоторые незначительные поправки к грамматике. – trincot

ответ

1
<?php 
$arr = array(); 
$path = "/Users/alokrajiv/Downloads/"; 
$d = dir($path); 
if ($handle = opendir($path)) { 
    while (false !== ($entry = readdir($handle))) { 
     if ($entry != "." && $entry != "..") { 
      $filepath = "{$path}{$entry}"; 
      $tmp = array(); 
      $tmp[0] = $filepath; 
      $tmp[1] = filemtime($tmp[0]); 
      array_push($arr, $tmp); 
     } 
    } 
    closedir($handle); 
} 
function cmp($a, $b){ 
    $x = $a[1]; 
    $y = $b[1]; 
    if ($x == $y) { 
     return 0; 
    } 
    return ($x > $y) ? -1 : 1; 
} 
usort($arr, 'cmp'); 
$x = 10; 
while(count($arr)>$x){ 
    array_pop($arr); 
} 
var_dump($arr); //has last modified 10 files 

Сортировать в порядке убывания затем выскочить до 10 элементов осталось.

+1

Благодарим за помощь! –

1

Может быть немного проще:

$files = array_filter(glob("$path/*.*"), 'is_file'); 
array_multisort(array_map('filectime', $files), SORT_DESC, $files); 
$result = array_slice($files, 0, $x); 
  • Читать все файлы с glob() и фильтром с is_file()
  • Сортировать файлы по filectime() нисходящему
  • Нарезать первое (последнее) $x количество файлов
Смежные вопросы