phpbar.de logo

Mailinglisten-Archive

[php] Sortieren mit Array

[php] Sortieren mit Array

Sebastian Mendel lists at sebastianmendel.de
Mit Sep 8 10:32:43 CEST 2004


Norbert Pfeiffer schrieb:

> Hi Lutz,
> 
> 
>>Ich habe nicht polemisiert.
> 
> okay,
> dann hast Du sicher auch hierfuer keinen Erklaerungsnotstand:
> http://www.uris.de/test/div/multisort.php4
> http://www.uris.de/test/div/multisort.php5
> 
> Habe auch versucht, die Reihenfolge der Spalten in multisort,
> so zu veraendern, wie sortiert werden soll, also $FS[3] zuerst.
> Aber das ueberlasse ich Dir - erschreck Dich nicht ... :-(
> 
> Und wenn man den Aufwand zwischen usort(); und array_multisort();
> vergleicht, liegt usort(); mit 5 Minuten zum Hinschreiben sowieso
> weit vor dieser fragwuerdgen Neuerung ... ;-)

also ich weiß ja nicht was du mit deinen Beispielen erreichen willst, 
weil du wie immer keine Kommentare dazu hast,

aber so wie du array_multisort() momentan verwendest versuchst du die 
_Werte_ der ersten 5 Dateien zu sortieren, oder irgendwie sowas, wenn 
man die Funktion falsch verwendet kommt natürlich nicht das heraus was 
man erwartet, wobei ich hier natürlich nur erraten kann was du 
erwartest: sortieren der Dateien nach: Dateiname, Größe, ....

wobei es sinnlos ist nach mehr als dem Namen zu sortien, da die Namen 
innerhalb eines Verzeichnisses eh einmalig sind, warum also nach mehren 
Sachen sortieren?

Aus deiner compare()-Funktion entnehem ich allerdings das du nur nach 
den Datei-Zeiten sortieren willst!?

abgesehen davon würde ich es mal so probieren: (ungetestet)


$path = './';
$dir = opendir($path);
while ( $file = readdir( $dir ) )
{
     if ( filetype($path.$file) == 'file' )
     {
         $FS['name'][] = $file;
         $FS['size'][] = filesize($path.$file);
         $FS['ctime'][] = filectime($path.$file);
         $FS['mtime'][] = filemtime($path.$file);
         $FS['atime'][] = fileatime($path.$file);
    }
}
closedir($dir);

array_multisort( $FS['ctime'], SORT_NUMERIC, SORT_DESC,
                  $FS['mtime'], SORT_NUMERIC, SORT_DESC,
                  $FS['atime'], SORT_NUMERIC, SORT_DESC,
                  $FS['size'], SORT_NUMERIC, SORT_ASC,
                  $FS['name'], SORT_STRING, SORT_ASC );


... habe bisher noch nie array_multisort() verwendet, aber glaube so 
müsste esgehen, auf jeden Fall hast du es anscheinend falsch verwendet 
... ansonsten sind im Handbuch mehr als genügend Beispiele ...

-- 
Sebastian Mendel

www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com
www.sf.net/projects/phpdatetime        www.sf.net/projects/phptimesheet

php::bar PHP Wiki   -   Listenarchive