Ich benutze usort, um ein Array mit einem assoziativen Array innerhalb jedes Elements zu sortieren.
Wenn alle Werte, die ich im Array sortiere, gleich sind, dann ändert sich immer noch die Position der Elemente im Array. Gibt es eine Möglichkeit, dies zu verhindern?
Zum Beispiel:
%Vor%Kann zu diesem geändert werden:
%Vor%Dies ist die Sortierfunktion:
%Vor% Ich habe überprüft, dass die Funktion weightSortImplementation
immer 0 zurückgibt und zeigt, dass sie gleich sind. Also, warum wird das Array immer noch neu angeordnet?
Aha, ein Fall für die Schwartzsche Transformation .
Es besteht im Wesentlichen aus drei Schritten:
Hier ist es (ich habe es an Ihren speziellen Anwendungsfall angepasst):
%Vor%Der Trick ist in der folgenden Behauptung:
%Vor%Dies ist die richtige Reihenfolge Ihres Arrays. Und, keine Rekursion erforderlich:)
Wenn zwei Mitglieder als gleich vergleichen, ist ihre relative Reihenfolge im sortierten Array undefiniert.
Sie können diese Funktion verwenden [source] , die die Reihenfolge bei zwei Elementen erhält gleich sein:
%Vor%