Hallo,
ich sitze gerade an einem Problem, dass ich zur besseren Ansicht ein Array mit Key (Ein Teilstring) und Value (Anzahl Vorkommnisse des Teilstrings im String) erst nach dem Value und dann noch nach dem Key sortieren möchte (genau in dieser Reihenfolge). Es scheint scheinbar ganz einfach zu sein, weil ich nur Posts zu mehrdimensionalen Arrays gefunden habe, dennoch komme ich nicht darauf.
Ich habe mein Array zuerst mit arsort($array);
nach den Werten sortiert, dies hat auch ganz gut funktioniert. Ausgabe von var_dump():
array(5) {
["foo"]=>
int(2)
["bar"]=>
int(2)
["barfoo"]=>
int(1)
["foobar"]=>
int(1)
["blah"]=>
int(1)
}
Nun wollte ich anschließend noch alphabetisch nach dem Schlüssel sortieren, habe dazu uksort($array, 'compare')
; benutzt wobei die Funktion compare eine simple Vergleichsfunktion von a und b darstellt.
function compare($a, $b) {
if($a == $b) {
return 0;
}
return ($a < $b) ? 1 : -1;
}
Das Array wird nun wie gewünscht nach dem Schlüssel sortiert, natürlich aber ohne die vorherige Sortierung zu beachten.
array(5) {
["bar"]=>
int(2)
["barfoo"]=>
int(1)
["blah"]=>
int(1)
["foo"]=>
int(2)
["foobar"]=>
int(1)
}
Man kann einer Sortierung ja keine Variable wie $sort = arsort($array)
zuweisen, um die Sortierung weiter zu sortieren und die Funktion array_multisort ist nur für multidimensionale Arrays und nicht für multiple Sortier-Verfahren zuständig.
Denke, ich muss meine compare-Methode einfach erweitern (keys und values mit rein bringen), wüsste aber nicht wie. Hab mich durch die Dokumentation gewühlt, habe aber keine passende Funktion gefunden, die ich adaptieren könnte.
Wäre für Hinweise und Tipps dankbar.
LG, DMan