Felix Riesterer: Sortierung mit Usort, deutsche Sonderzeichen

Beitrag lesen

Liebe(r) Silja,

mein Code setzt voraus, dass Deine PHP-Scripte in UTF-8 gespeichert sind, sonst sind viele der Zeichen mit Deinem gewählten Encoding (ISO-8859-1?) nicht darstellbar. Wer heutzutage noch immer kein UTF-8 benutzt, macht sich das Leben unnötig schwer.

Was wird denn an sort_callback ($a, $b) in den Parametern $a und $b übergeben?

Jeweils ein Array-Element (was steht in Deinem Array?). Eine Callback-Funktion soll laut Dokumentation (hattest Du diese nicht gefunden oder nicht verstanden?) zwei Parameter zum Vergleich entgegen nehmen. Als Rückgabewerte sind -1 (für "kleiner"), 0 (für "gleich") und 1 (für "größer") zurück zu geben. In dem Verlinkten Beispiel wird das auch so gemacht.

In PHP gibt es bereits Vergleichsfunktionen wie z.B. strcmp, welche genau das tun (Strings vergleichen), allerdings vielleicht nicht in der von Dir gewünschten Form (willst Du GrOß-/kLeIn-Schreibung berücksichtigen oder hast Du keine Strings in Deinem Array?). Daher kann man, wenn die vorhandenen Funktionen nicht Deinen Wünschen entsprechen, eine eigene Vergleichsfunktion schreiben, die man dann von usort und seinen Brüdern (uasort, uksort) als Vergleichsfunktion nutzen lassen kann. Damit diese u_sort-Funktionen Deine spezialisierte Vergleichsfunktion auch nutzen können, musst Du ihren Namen im zweiten Parameter als String übergeben.

Das wäre der Sinn des PHP-Beispiels in der Doku gewesen.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)