Ich möchte ein assoziatives Array sortieren, und es gibt eine integrierte Funktion, um die gleiche viz zu erreichen. arsort()
, aber das Problem mit dieser Funktion besteht darin, dass die ursprüngliche Schlüsselreihenfolge nicht beibehalten wird, wenn die Werte gleich sind. z.B.Sortieren eines assoziativen Arrays nach Wert in absteigender Reihenfolge und Beibehaltung der Reihenfolge, wenn Werte gleich sind
$l = [
'a' => 1,
'b' => 2,
'c' => 2,
'd' => 4,
'e' => 5,
'f' => 5
];
Das Ergebnis, das ich will, ist:
$l = [
'e' => 5,
'f' => 5,
'd' => 4,
'b' => 2,
'c' => 2,
'a' => 1
];
arsort()
gibt das Ergebnis in absteigender Reihenfolge, aber es ordnet zufällig das Element, wenn die Werte gleich sind. Diese Frage ist kein Duplikat von PHP array multiple sort - by value then by key?. In dieser Frage wird nach dem gleichen numerischen Wert gefragt, der alphabetisch sortiert wird, aber in meiner Frage werde ich nach Werten gefragt, die nach der ursprünglichen Reihenfolge sortiert werden sollen, wenn sie gleich sind.
http://php.net/manual/ de/function.array-multisort.php oder http://php.net/manual/en/function.usort.php –
Ich kann das nicht reproduzieren. für Ihr Beispiel, bekomme ich die Ergebnisse, die Sie wollen (e, f, d, b, c, a) mit arsort –
Definitiv reproduzierbar https://3v4l.org/kqZLd – rjdown