Sortieren von Bruchzahlen in einem mehrdemensionalen ARRAY
Andre
- php
Ich habe eine Tabelle in der in einer Spalte Bruchzahlen (21,99) vorkommen. Nun will ich die Spalte aufsteigend nach mummerischen Zeichen sortieren.
Das Problem ist, dass Inhalte immer als Strins behandelt werden. und so Steht beim aussteigendem Sortieren die 105 noch vor der 20. Zusätzlich haben wirs hier auch noch mit Bruchzahlen wie 11,99 zu tun.
meine Idee war folgende:
ORDER BY Bruchzahl DESC SORT_NUMERIC
Doch ich fürchte ich habe hier aus verschiedenen ereichen etwas zusammen gewürfelt. Weis jemand Rat?
Hello,
da schau Dir mal die Funktionen
sort()
asort()
und besonders uasort() an.
Wenn Dein Array nämlich mehr als eine "Datenspalte" hat, dann nützt meistens nur eine selbstdefinierte Sortierfunktion.
Diese Schalter gibt es:
SORT_REGULAR - Vergleiche Einträge normal
SORT_NUMERIC - Vergleiche Einträge numerisch
SORT_STRING - Vergleiche Einträge als Strings
Grüße
Tom
Moin!
Ich habe eine Tabelle in der in einer Spalte Bruchzahlen (21,99) vorkommen.
Das sind keine Bruchzahlen, sondern Dezimalzahlen. Das ist insofern ein Unterschied, als Bruchzahlen so lustige Dinge sind wie 1/2, 23/54 oder 1325/671 - die sind also noch wesentlich schwieriger zu sortieren, als deine Dezimalzahlen.
Das Problem ist, dass Inhalte immer als Strins behandelt werden.
Das muß aber nicht so sein, das ist nur deswegen so, weil du es so definiert hast.
meine Idee war folgende:
ORDER BY Bruchzahl DESC SORT_NUMERIC
Du benutzt also eine Datenbank zum Sortieren. Dann ist dein Problem keines, was mit PHP zu lösen wäre.
Setze in der Datenbank einen Zahlentyp für die Spalte ein, die du sortieren willst. Dann weiß deine Datenbank, dass sie keine Stringvergleiche, sondern Zahlenvergleiche vornehmen soll, und sortiert sofort richtig (richtig im Sinne von: So, wie du es gerne hättest - Strings alphabetisch zu sortieren ist ja auch richtig).
Doch ich fürchte ich habe hier aus verschiedenen ereichen etwas zusammen gewürfelt. Weis jemand Rat?
Hast du eine Datenbank? Oder hast du keine?
Unabhängig davon gilt: Zahlen sollten als Zahlen behandelt werden, nicht als String.
- Sven Rautenberg
hallo!
noch mal gegenlesen hätte dir diesen peinlichen schreibfehler erspart. ;-)
grüsse, raik
Hallo,
Bruchzahlen (21,99)
"21,99" ist vielleicht fuer Dich als _Deutscher_ eine
Bruchzahl (21 komma 99), fuer alle mir bekannten
Programmiersprachen ist das aber ein String.
Das (englische und Programmiersprachen-) Dezimalzeichen
ist der Punkt:
21.99
Thomas