Beibehalten der Schlüsselreihenfolge beim Sortieren mit PHPs uasort
Abfrage:
Ist das möglich? Die Werte eines assoziativen Arrays in PHP unter Beibehaltung der ursprünglichen Reihenfolge der Schlüssel mithilfe der in PHP integrierten Sortierfunktionen sortieren?
Herausforderung:
Eine stabile Sortierung erreichen Wenn gleiche Werte ihre ursprüngliche Schlüsselreihenfolge beibehalten, muss eine benutzerdefinierte Sortierfunktion verwendet werden, da PHP keine stabile Sortierung nativ unterstützt.
Lösung:
Eine benutzerdefinierte Zusammenführungssortierung, die O(n*log(n))-Komplexität garantiert und die Stabilität aufrechterhält, kann verwendet werden:
<code class="php">function mergesort(&$array, $cmp_function = 'strcmp') { // Handle base cases if (count($array) < 2) return; // Split the array into halves $halfway = count($array) / 2; $array1 = array_slice($array, 0, $halfway); $array2 = array_slice($array, $halfway); // Recursively sort the halves mergesort($array1, $cmp_function); mergesort($array2, $cmp_function); // Merge the sorted halves $array = array(); $ptr1 = $ptr2 = 0; while ($ptr1 < count($array1) && $ptr2 < count($array2)) { if (call_user_func($cmp_function, $array1[$ptr1], $array2[$ptr2]) < 1) { $array[] = $array1[$ptr1++]; } else { $array[] = $array2[$ptr2++]; } } // Merge the remaining elements while ($ptr1 < count($array1)) $array[] = $array1[$ptr1++]; while ($ptr2 < count($array2)) $array[] = $array2[$ptr2++]; }</code>
Alternative Ressource:
Ein informativer Forenthread kann sein finden Sie unter diesem Link: [Forum-Thread-Link]
Das obige ist der detaillierte Inhalt vonKönnen Sie die Schlüsselreihenfolge beim Sortieren assoziativer Arrays in PHP beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!