Hallo Tom,
erstmal ist deine Loesung ein wenig sehr aufwendig. Sowohl programmiertechnisch als auch
ressourcentechnisch.Aber usort mit Callback-Funktion ist ressourcenschonend?
Ein _ganzes_ Stueck mehr, ja. Mach doch mal eine Aufwandsanalyse: usort benutzt den
Sortieralgorithmus Quicksort, der Aufwand ist also O(ld 2). Bei deiner Aktion muss
folgendes gemacht werden:
- Array kopieren: O(n)
- array_map() mit str_replace(). O(n), zusaetzlich ist der Aufwand pro Element nochmal
sehr abhaengig von der Laenge der Werte und deshalb absolut nicht einschaetzbar, wie
hoch er tatsaechlich ist. - Sortierung, Quicksort-Algorithmus. O(ld n).
Der Aufwand deiner Aktion kostet also 2xO(n) + O(ld n).
Dann:
foreach($_b as $key => $val) ## $val brauch ich nicht, aber anders bekommt man $key
nichtwhile(list($key,) = each($_b)) {
# ...
}Dass es mit der normelen Schleife und dem Einsatz von zwei Zusatzkunstukten / Funktionen
geht, habe ich auch nicht bezweifelt. Aber mit foreach() geht es nicht anders, den key
zu beschaffen, und das habe ich gemeint.
Dann schreib das auch so.
Meine Foreach-Kontruktion benötigt nut ca. 20-30% der Zeit der while-Konstruktion.
Darum ging es ja nicht.
Grüße,
CK