Veröffentlicht 5. September 200322 j Ich habe mal folgendes Array mit Strings gefüllt und sie JustForFun mal mit dem Parameter SORT_NUMERIC sortiert. <?php $q = array(1=>'A',2=>'B',3=>'C',4=>'D',5=>'E',6=>'F',7=>'G',8=>'H',9=>'I',10=>'J', 11=>'K',12=>'L',13=>'M',14=>'N',15=>'O',16=>'P',17=>'Q',18=>'R',19=>'S',20=>'T' ); asort($q,SORT_NUMERIC); print_r($q) ?>[/PHP] Die Ausgabe verwirrt mich jedoch sehr: Array ( [b][11] => K[/b] [2] => B [3] => C [4] => D [5] => E [6] => F [7] => G [8] => H [9] => I [10] => J [b][1] => A [/b][12] => L [13] => M [14] => N [15] => O [16] => P [17] => Q [18] => R [19] => S [20] => T ) Wieso sortiert mir die Funktion die Werte so komisch. Hätte erwartet das er anhand der ASCII-Wertigkeiten sortiert und nich die [b]MITTE[/b] mit dem [b]ANFANG[/b] tauscht. Wenn man Arrays kleiner gleich 8 hat wird übrigens immer immer der [b]ERSTE[/b] Wert im Array zum [b]LETZTEM[/b]. Kann hier irgendein Spezi das Mysterium aufklären oder zumindest ne Vermutung abgeben? Ist das ein Bug oder ein Feature? Gruß SteveBo:beagolisc
5. September 200322 j den gewünschten effekt solltest du mit folgendem code erzielen: asort ($array); [/PHP] manual sagt: Sorting type flags: SORT_REGULAR - compare items normally SORT_NUMERIC - compare items numerically SORT_STRING - compare items as strings
8. September 200322 j Danke, aber das ist mir schon klar, wie ich mir diese "Strings" richtig sortieren könnte. Aber es ist nun mal sehr Merkwürdig das er bei "SORT_NUMERIC" überhaupt keine erkennbare Logik verfolgt. Ich hätte vermutet, dass die Funktion A-Z und dann a-z sortiert oder Umgekehrt, weil er nach den dezimalen Werten in der ASCII-Tabelle geht. Aber leider sortiert er wider jeder mir ersichtlichen Logik. Oder ist das gut wenn man die Mitte/das Ende mit dem ersten Wert tauscht? Folge: Meine Frage steht noch im Raum. Weiß jemand die Antwort? Gruß SteveBo:confused:
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.