2009-06-19 12 views
6

Poniższy kod jest częścią funkcji przechwytywania 5 plików graficznych z danego katalogu.Jak zdobyć X najnowsze pliki z katalogu w PHP?

W tej chwili readdir zwraca obrazy "w kolejności, w jakiej są przechowywane przez system plików" zgodnie z spec.

Moje pytanie brzmi: jak mogę go zmodyfikować, aby uzyskać najnowsze 5 zdjęć? Albo na podstawie daty last_modified lub nazwy pliku (które wyglądają jak 0000009-16-5-2009.png, 0000012-17-5-2009.png itp.).

if ($handle = opendir($absolute_dir)) 
{ 
    $i = 0; 
    $image_array = array(); 

    while (count($image_array) < 5 && (($file = readdir($handle)) !== false)) 
    { 
     if ($file != "." && $file != ".." && $file != ".svn" && $file != 'img') 
     { 
      $image_array[$i]['url'] = $relative_dir . $file; 
      $image_array[$i]['last_modified'] = date ("F d Y H:i:s", filemtime($absolute_dir . '/' . $file)); 
     } 

     $i++; 
    } 
    closedir($handle); 
} 

Odpowiedz

13

Jeśli chcesz zrobić to całkowicie w PHP, musisz znaleźć wszystkie pliki i ich ostatnie czasy modyfikacji:

$images = array(); 
foreach (scandir($folder) as $node) { 
    $nodePath = $folder . DIRECTORY_SEPARATOR . $node; 
    if (is_dir($nodePath)) continue; 
    $images[$nodePath] = filemtime($nodePath); 
} 
arsort($images); 
$newest = array_slice($images, 0, 5); 
2

Jeśli jesteś naprawdę zainteresowany tylko na zdjęciach można wykorzystać glob() zamiast Scandir soulmerge:

$images = array(); 
foreach (glob("*.{png,jpg,jpeg}", GLOB_BRACE) as $filename) { 
    $images[$filename] = filemtime($filename); 
} 
arsort($images); 
$newest = array_slice($images, 0, 5); 
1

Lub możesz utworzyć funkcję dla ostatnich 5 plików w określonym folderze.

private function getlatestfivefiles() { 
    $files = array(); 
    foreach (glob("application/reports/*.*", GLOB_BRACE) as $filename) { 
     $files[$filename] = filemtime($filename); 
    } 
    arsort($files); 

    $newest = array_slice($files, 0, 5); 
    return $newest; 
} 

btw im przy użyciu struktury CI. Twoje zdrowie!

Powiązane problemy