Hallo Rüdiger,
dann selbst rumprobiert und das kam raus:
function sort_abc($a, $b){
if(strtoupper($a[3]{0}) == "Ä"){$a[3]{0} = "A";}
if(strtoupper($a[3]{0}) == "Ö"){$a[3]{0} = "O";}
if(strtoupper($a[3]{0}) == "Ü"){$a[3]{0} = "U";}
if(strtoupper($b[3]{0}) == "Ä"){$b[3]{0} = "A";}
if(strtoupper($b[3]{0}) == "Ö"){$b[3]{0} = "O";}
if(strtoupper($b[3]{0}) == "Ü"){$b[3]{0} = "U";}
okay, du behandelst bei der Sortierung also ä,ö,ü wie a,o,u und kümmerst dich außerdem nicht um Groß/Kleinschreibung. Gut. Aber dass hier zweimal hintereinander genau dasselbe steht, ist dir nicht aufgefallen? Einmal hätte genügt ...
if(strtoupper($a[3]{0}) == strtoupper($b[3]{0})) return 0;
return (strtoupper($a[3]{0}) > strtoupper($b[3]{0}))?1:-1;
Außerdem vergleichst du immer nur das erste Zeichen deiner Strings. Das heißt, die Wörter "Auspuff", "Anpfiff", "ähnlich", "ätsch" und "aaa" sortieren alle gleichrangig.
hab zwar jetzt nicht mehr die Ä,ä,Ü,ü,Ö,ös am schluss sondern bei den jeweiligen buchstaben aber auch nicht am anfang wo sie hingehören
Was meinst du mit "auch nicht am Anfang"?
Was in deiner Vergleichsfunktion fehlt, ist eine Schleife, die Zeichen für Zeichen durch den String marschiert, bis sie sich an einer Stelle unterscheiden oder einer der beiden Strings zu Ende ist.
äußere
Auspacken
äußere
Auslauf
Auspacken
äußere
Alter
Naja, du sortierst ja auch nicht *innerhalb* der Begriffe, die mit [AaÄä] anfangen. Sonst müsste sich folgende Reihenfolge ergeben, wenn du das Prinzip konsequent weiterführst:
Alter
ändern
Auslauf
Auspacken
Auspacken
äußere
äußere
äußere
Axt
Die Begriffe "Ändern" und "Axt" habe ich noch hinzugefügt, um das Prinzip deutlicher zu machen.
So long,
Martin
Lieber eine Fliege im Porzellanladen
als ein Elefant in der Suppe.