wahsaga: Strings nach Buchstaben, dann nach Zahlen sortieren

Beitrag lesen

hi,

ich suche eine PHP-Funktion, die mir String sortiert,

diese liegen also vermutlich als werte eines arrays vor, oder?

so dass zuerst die Strings nach den Buchstaben (alphabetisch/aufwärts) sortiert werden und danach folgend die Strings, die mit Zahlen beginnen (ebenfalls aufsteigend).
Eine PHP-eigene Funktion habe ich keine bisher gefunden, aber ich lasse mich gerne eines besseren belehren.

ich glaube nicht, dass es eine funktion dafür gibt.

bei strings wendet php eine alphanummerische sortierung an, und dabei werden die ziffern nun mal vor den buchstaben einsortiert, da sie ja auch vor denen im ascii-zeichensatz liegen.

deshalb wirst du hier mit den "normalen" funktionen zum sortieren von arrays nicht zum ziel kommen.

es gibt aber auch funktionen wie usort() (http://www.php.net/manual/de/function.usort.php), wo du eine eigene vergleichsfunktion angeben kannst.

du müsstest dir also eine eigene kleine vergleichsfunktion schreiben, die nur zwei übergeben werte vergleicht, und dann -1 zurückgibt, wenn der erste wert "kleiner" als der zweite ist, bzw. 1 im anderen fall.

was "kleiner" heisst hängt hierbei natürlich von der sortierreihenfolge ab, die du dir definiert hast.
sorge also dafür, dass deine vergleichsfunktion im falle eines vergleichs eines buchstaben mit einer ziffer den buchstaben als "kleiner" als die ziffer behandelt (die übrigen vergleiche, also buchstabe mit buchstabe bzw. ziffer mit ziffer, sollten natürlich das ergebnis liefern, was ein standardmäßiger alphanummerischer vergleich sonst auch liefert).

gruss,
wahsaga