komplizierte Sortierung
Frank Fischer
- php
0 wahsaga
Hallo,
ich habe ein Array mit Werten (Strings) und möchte diese nach dem Schlüssel sortieren. Das macht man ja standardmäßig mit ksort();.
Allerdings gibt es eine Schwierigkeit und zwar soll es grundsätzlich alphabetisch sortiert sein, allerdings sollen bestimmte Schlüssel als erstes im Array stehen, selbst wenn sie nach alphabetischer Reihenfolge erst weiter hinten kommen würden.
Bsp:
array("hund" => "dackel","katze" => "hauskatze","affe" => "schimpanse","bär" => "braunbär","ziege" => "waldziege");
Alphabetisch wäre das ja so sortiert:
array("affe" => "schimpanse","bär" => "braunbär","hund" => "dackel","katze" => "hauskatze","ziege" => "waldziege");
Ich hätte es aber gerne so.
array("ziege" => "waldziege","affe" => "schimpanse","bär" => "braunbär","hund" => "dackel","katze" => "hauskatze");
Also praktisch, dass ein (oder mehrere) Schlüssel ganz vorne stehen und die anderen dann alphabetisch danach sortiert werden.
Ich bin bei meiner Suche auch die Funktion uksort(); gestoßen, allergings verstehe ich das (die) Beispiel(e) nicht.
Ich hätte noch ne andere Idee, das zu realisieren und zwar indem ich durch eine PHP-Funktion (die ich nicht kenne, wo ich mir aber vorstellen kann, dass es die gibt) den gewünschten Schlüssel innerhalb des Arrays ganz an den Anfang verschieben lasse und die restlichen Schlüssel verschieben sich halt alle um eins nach hinten.
Gibt es da eine Funktion ?
Danke
ff
hi,
Ich bin bei meiner Suche auch die Funktion uksort(); gestoßen, allergings verstehe ich das (die) Beispiel(e) nicht.
usort()/uksort() arbeiten mit einer von dir selbst zu definierenden vergleichsfunktion, deren rückgabewert aussagt, ob der erste vergleichswert als "kleiner", "gleich" oder "größer" als der zweite angesehen werden soll.
und genau das könntest du hier nutzen, in dem du dir eine funktion schreibst, die für die "normalen" werte den normalen vergleich macht, für die "sonderwerte" aber immer zurückgibt, dass diese "größer" sein sollen als der jeweilgie vergleichswert, und somit "vorne" im sortierten array landen.
gruß,
wahsaga