Array sortieren

radarin

Angesehenes Mitglied
Hallo Liste

Ich versuche den Inhalt eines Arrays zu sortieren

CODE sort($dir, SORT_DESC)


Ohne Angebe der Sortierfolge sortiert es mir alphabetisch aufsteigend. Absteigend will es aber nicht. Listet trotzdem aufsteigend. Oder ich bekomme grundsätzlich die Meldung der 2. Parameter sei zu lang.

Was muss ich denn in diesem Zusammenhang beachten? Ich will entweder alphabetisch oder numerisch sortieren können.




CODE
$verz=opendir ($pfad);

$verzeichnisse = array();

while ($verz2 = readdir ($verz)) {

if (($verz2 != ".") && ($verz2 != "..")){

array_push($verzeichnisse, $verz2);

}

}

$verzecihnisse = sort ($verzeichnisse, SORT_DESC);

foreach ($verzeichnisse as $v) {

echo "<a href='$PHP_SELF?verzecihniss=$v'>$v</a>";

}



Gruss René
 
danke, ich möchte eigentlich auch definieren, ob numerisch oder alphabetisch sortiert werden soll. Oder kann ich das ignorieren und einfach sort() und asort() ohne zusätzliche flags verwenden? in praktisch allen beispielen wird auf die flags verzichtet.

gruss rene
 
Was ist genau die Frage?

CODE asort($arr, SORT_NUMERIC);
asort($arr, SORT_STRING);
//bzw
arsort($arr, SORT_NUMERIC);
arsort($arr, SORT_STRING);



Die Flags kannst Du insofern weglassen, alsdass PHP keine feste Typen kennt. Ergo begreifft er es i.d.R. automatisch. Machst Du aber asort(String[], SORT_NUMERIC) wirst Du ein unerwartetes Ergebnis haben. Ich denke SORT_STRING auf Int[] oder float[] führt dann zu z.B. 2, 22, 3, 33; also auch nicht das gewünschte.

Ausserdem erhöht es die Lesbarkeit des Codes, wnen man die Flag angibt.

Bitte lerne Doc lesen, für Dich selber: hier wird das genau erklärt:
http://ch2.php.net/manual/de/function.sort.php
http://ch2.php.net/manual/de/function.arsort.php

PS: Geiles Avatar...
 
*SMILE*, finde auch die Post hätte da schon längst selber drauf kommen können.
cool.gif


In der DOC hab ich schon gelesen, und da ist mir eben aufgefallen, dass die Flags nirgens angewendet werden bei den Beispielen und ich eine Fehlermeldung bekommen, von wegen zu lang. Werde jetzt mal etwas experimentieren und auf das sortierverhalten achten. Ergebnisse aber nicht vor morgen, ist schon spät jetzt. Gute Nacht allerseits.
 
Mit natcasesort($var) kann ich ein Array so sortieren, dass GROSS und Kleinschreibung ignriert werden und so eine ordentliche alphabetische Reihenfolge entsteht. Wie aber kann ich jetzt umgekehrt sortieren? mit arsort($var) werden GROSSE Buchstaben kleinen vorgezogen und es kann eine alphabetisch falsche Reigenfolge entstehen.



P.S.: Sowas funtioniert nicht:

natcasesort(arsort($fruits));

Habs auch mit array_reverse($fruits) probiert, aber das krieg ich so auch nicht hin. Dachte daran, erst mit natcasesort() die Sortierung vorzunehmen und dann mit array_reverse() einfach umzukehren. Aber irgendwie scheitert es an der Syntax...
 
Zurück
Oben