2009-06-19 7 views
6

Il codice seguente fa parte di una funzione per l'acquisizione di 5 file di immagine da una determinata directory.Come ottenere X file più recenti da una directory in PHP?

Al momento readdir restituisce le immagini "nell'ordine in cui sono memorizzate dal filesystem" come da spec.

La mia domanda è, come posso modificarlo per ottenere le ultime 5 immagini? O in base alla data last_modified o al nome file (che assomiglia a 0000009-16-5-2009.png, 0000012-17-5-2009.png, ecc.).

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

risposta

13

Se si vuole fare questo interamente in PHP, è necessario trovare tutti i file e le loro ultime volte modifica:

$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

Se siete veramente interessati solo in foto è possibile utilizzare glob() invece di scandir di 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

oppure è possibile creare la funzione per gli ultimi 5 file nella cartella specificata.

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 utilizzando framework CI. Saluti!

Problemi correlati