Andre: Sortieren von Bruchzahlen in einem mehrdemensionalen ARRAY

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?

  1. 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

  2. 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

    --
    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
  3. hallo!

    noch mal gegenlesen hätte dir diesen peinlichen schreibfehler erspart. ;-)

    grüsse, raik

  4. 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