Heim > Backend-Entwicklung > PHP-Tutorial > Können Sie die Schlüsselreihenfolge beim Sortieren assoziativer Arrays in PHP beibehalten?

Können Sie die Schlüsselreihenfolge beim Sortieren assoziativer Arrays in PHP beibehalten?

Susan Sarandon
Freigeben: 2024-11-02 20:12:31
Original
229 Leute haben es durchsucht

Can you Preserve Key Order While Sorting Associative Arrays in PHP?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage