webForumDet fria alternativet

Sortera en dir() efter datum.

2 svar · 281 visningar · startad av greyhound

greyhoundMedlem sedan maj 20031 472 inlägg
#1

Om jag vill sortera en dir() hur gör jag då?

Jag tänkte man skulle kunna lägga in resultatet i en array och sortera den, MEN då kom jag på att det skulle ju va skoj om det gick att sortera efter datum och storlek också men då gick jag bet :)

Någon som kan hjälpa mig med att fixa detta?

MatteMedlem sedan aug. 20002 975 inlägg
#2

T.ex

$path = './katalog';

$files = array();

if ($handle = opendir($path)) { 

   while (false !== ($file = readdir($handle))) { 

       if ($file != "." && $file != ".." && !is_dir($path.'/'.$file)) { 

           $time = filemtime($path.'/'.$file);
           $size = filesize($path.'/'.$file);
           $files[] = array($file, $time, $size);

       } 

   } 

   closedir($handle); 

}

function cmp($a, $b) { 

   if ($a[1] == $b[1]) { 
       return 0; 
   } 

   return ($a[1] < $b[1]) ? -1 : 1; 

}

usort($files, 'cmp');

foreach ($files as $val) {

   echo $val[0].' - '.date("Y-m-d H:i:s", $val[1]).' - '.round($val[2] / 1024).' kB<br>';

}

Vill du sortera efter storlek så ändrar du 1 till 2 i arrayvariablerna i funktionen cmp.
Vill du ändra ordningen med högst värde först, så ändrar du < till > i samma funktion.

greyhoundMedlem sedan maj 20031 472 inlägg
#3

Tackar

125 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)