Ordenar archivos de un directorio con PHP

2
1959

Este código nos ayuda a ordenar los archivos en cualquier directorio de nuestro sitio web. Hacemos uso de la función filemtime para obtener la hora de modificación del archivo. Veamos.

function Sort_Directory_Files_By_Last_Modified($dir, $sort_type = 'descendente', $date_format = "F d Y H:i:s."){
$files = scandir($dir);

$array = array();

foreach($files as $file){
if($file != '.' && $file != '..'){
$now = time();
$last_modified = filemtime($dir.$file);
$time_passed_array = array();
$diff = $now - $last_modified;
$days = floor($diff / (3600 * 24));

if($days){
$time_passed_array['dias'] = $days;
}

$diff = $diff - ($days * 3600 * 24);
$hours = floor($diff / 3600);

if($hours){
$time_passed_array['horas'] = $hours;
}

$diff = $diff - (3600 * $hours);
$minutes = floor($diff / 60);

if($minutes){
$time_passed_array['minutos'] = $minutes;
}

$seconds = $diff - ($minutes * 60);
$time_passed_array['segundos'] = $seconds;

$array[] = array('file' => $file,
'timestamp' => $last_modified,
'date' => date ($date_format, $last_modified),
'time_passed' => $time_passed_array);
}
}

usort($array, create_function('$a, $b', 'return strcmp($a["timestamp"], $b["timestamp"]);'));

if($sort_type == 'descendente'){
krsort($array);
}
return array($array, $sort_type);
}

Ahora simplemente configuraremos un par de opciones y llamaremos a esta función, veamos:

$dir  = dirname(__FILE__)."\\"; // termina en slash invertido y escapamos

$array = Sort_Directory_Files_By_Last_Modified($dir);

// info array
$info = $array[0];

// tipo de ordenado
$sort_type = $array[1];

echo '<h3>'.$dir.'</h3>';
echo 'Ordenado por: Ultima modificacion ('.$sort_type.')<br />';

foreach($info as $key => $detail){
echo '<h4 style="color: #3B4F9F;">'.$detail['file'].'</h4>';
echo 'Ultima modificacion: '.$detail['date'].'<br />';
$time_passed = '';
foreach($detail['time_passed'] as $type => $value){
$time_passed .= $value." ".$type.", ";
}

$time_passed = "hace <span style='color: #377420;'> ".rtrim($time_passed, ", ")."</span>";
echo $time_passed."\n\n";
}

El resultado final:

Order File PHP

Visto y probado desde BitRepository

2 COMENTARIOS

  1. Hola muy buenas,

    Enhorabuena por tu script, pero necesito algo mças complicado.. ordenar los archivos por el parámetro ” Imagen tomada el día “..

    Muchas gracias y un saludo!

Comments are closed.