Bubblesort
Taker
- php
1 Sven Rautenberg0 Taker
0 MudGuard0 seth
0 rob0 Geistiger Hohlraum
Hi leuts,
ich hab ne frage in PHP über Bubble Sort.
das was er sortieren soll steht in ein array. is ja klar.
in diesen array stehen namen von Strasse. Die möchte ich nach namen ordnen. Dabei macht er ein Fehler und zwar setzt die namen die mit mit 'Ä',usw. also Umlaute am ende.
Hat da jemand eine Lösung?
Moin!
das was er sortieren soll steht in ein array. is ja klar.
in diesen array stehen namen von Strasse. Die möchte ich nach namen ordnen. Dabei macht er ein Fehler und zwar setzt die namen die mit mit 'Ä',usw. also Umlaute am ende.Hat da jemand eine Lösung?
Der ASCII-Code eines Umlauts ist halt ein anderer, als der des A - folglich kommen die Umlaute nach hinten.
Du wirst vermutlich eine eigene Vergleichsfunktion basteln müssen, welche eine Normalisierung der enthaltenen Zeichen durchführt - in diesem Fall zum Zwecke des Stringvergleichs vorher alle Umlaute mit den zugehörigen Grundformen ersetzt, dann vergleicht und das Resultat zurückgibt.
usort() wäre eine gut geeignete Funktion dafür, da kannst du eine eigene Vergleichfunktion angeben.
- Sven Rautenberg
Thanks
ich hab da was bei php.net durch usort() gefunden
Hi,
in diesen array stehen namen von Strasse. Die möchte ich nach namen ordnen. Dabei macht er ein Fehler
Wer ist "er"?
und zwar setzt die namen die mit mit 'Ä',usw. also Umlaute am ende.
Wie sieht der Sortier-Algorithmus aus?
Werden dort diakritische Zeichen (Umlaute, akzentierte Zeichen usw.) gesondert behandelt? Wenn nein, warum nicht?
cu,
Andreas
gudn tach!
in diesen array stehen namen von Strasse. Die möchte ich nach namen ordnen. Dabei macht er ein Fehler
Wer ist "er"?
na, garantiert einer von IHNEN!
scnr
prost
seth
Hi!
Es gibt keine Funktion BubbleSort() in PHP. Folglich weiß ich auch nicht, wie du deine Sortierung durchführst.
Wäre vielleicht sinnvoll, wenn du deinen Code posten würdest.
Dabei macht er ein Fehler und zwar setzt die namen die mit mit 'Ä',usw. also Umlaute am ende.
Ich vermute mal, daß ist kein Fehler, sondern einfach die Sortierung in einer der von dir verwendeten Funktion.
Woher soll die Funktion wissen, in welcher Reihenfolge du ein Zeichen gerne sortiert hättest?
Soll ä wie a behandelt werden oder wie ae oder wie was? Oder soll ß wie ss oder wie sz einsortiert werden?
Selbst in vielen Indices in Büchern wird das immer anders gehandhabt... Aber egal...
Tausch deine Zeichen doch aus, sortiere dann und tausche zurück.
Schau mal z.B. hier: http://de3.php.net/natcasesort und scroll runter bis zu "Umlaut".
Gruß, rob
Hi,
Tausch deine Zeichen doch aus, sortiere dann und tausche zurück.
Das mit dem Zurücktauschen ist so eine Sache ...
Es kann zwar problemlos jedes ä in ae gewandelt werden, aber nicht jedes ae darf in ä gewandelt werden (z.B. das ae in meinem Nachnamen nicht).
Häufiger ist allerdings der Fall mit dem ue - wenn Du das gnadenlos zurücktauschst, bekommst Du Feür unter den Hintern - egal ob das ein neür Hintern ist oder nicht ;-)
cu,
Andreas
MudGuard,
Häufiger ist allerdings der Fall mit dem ue - wenn Du das gnadenlos zurücktauschst, bekommst Du Feür unter den Hintern - egal ob das ein neür Hintern ist oder nicht ;-)
Also tü das lieber nicht. ;-)
Gunnar
Die möchte ich nach namen ordnen. Dabei macht er ein Fehler und zwar setzt die namen die mit mit 'Ä',usw. also Umlaute am ende.
Hat da jemand eine Lösung?
Nicht nach Bytewerten sortieren, die Variationen der lateinischen Basisbuchstaben befinden sich in den Zeichentabellen alle weit hinter den Basisbuchstaben selbst: http://de.selfhtml.org/inter/zeichensaetze.htm.
Entweder erstellst Du selbst eine Wertigkeitsliste (aufwändig, fehlerträchtig, langsam) oder Du verlässt Dich auf Systemfunktionen wie
http://de.php.net/manual/de/function.strcoll.php.