Aktueller Standort: Startseite> Neueste Artikel> Warum ist der Schlüsselname nach RSORT -Sortierung verloren? Wie löst ich dieses gemeinsame Problem?

Warum ist der Schlüsselname nach RSORT -Sortierung verloren? Wie löst ich dieses gemeinsame Problem?

gitbox 2025-06-17

In PHP verwenden wir häufig verschiedene Sortierfunktionen, um Arrays zu sortieren. RSORT () ist eine der üblichen Funktionen, mit denen Arrays (von groß nach klein) umgekehrt werden. Viele Entwickler haben jedoch festgestellt, dass nach Verwendung von RSORT () der Schlüsselname des Arrays zurückgesetzt wird und der ursprüngliche Schlüsselname verloren geht. Dies führt dazu, dass viele Menschen Probleme haben, sich mit assoziativen Arrays zu befassen.

Warum fehlen Schlüsselnamen?

RSORT () ist eine Funktion, die speziell für die Sortierung von Index -Arrays (numerische Schlüssel) entwickelt wurde. Es baut den Index des Arrays neu auf , dh und indiziert automatisch ab 0. Es behält den ursprünglichen Schlüsselnamen nicht bei, da er die Werte sortiert und kontinuierliche numerische Indizes generiert.

Einfach ausgedrückt, RSORT () wird nach Wert sortiert und für gewöhnliche numerische Arrays geeignet.

Zum Beispiel:

 <?php
$arr = [
    'a' => 3,
    'b' => 1,
    'c' => 2
];
rsort($arr);
print_r($arr);
?>

Das Ausgangsergebnis ist:

 Array
(
    [0] => 3
    [1] => 2
    [2] => 1
)

Wie Sie sehen können, sind die ursprünglichen Schlüsselnamen 'A', 'B', 'C' vollständig verschwunden und sind zu einem kontinuierlichen numerischen Index geworden.


Wie löst ich dieses Problem?

Wenn wir Arrays mit Schlüsselnamen sortieren und die Schlüsselnamen unverändert halten müssen, können wir Folgendes berücksichtigen:

1. Verwenden Sie Arsort ()

arsort () ist eine Funktion mit zugehörigen Schlüsselnamen. Es kann Array -Werte umkehren und die Schlüsselnamen unverändert halten.

Beispiel:

 <?php
$arr = [
    'a' => 3,
    'b' => 1,
    'c' => 2
];
arsort($arr);
print_r($arr);
?>

Ausgabe:

 Array
(
    [a] => 3
    [c] => 2
    [b] => 1
)

Auf diese Weise sind die Schlüsselnamen A, B, C intakt erhalten.

2. Verwenden Sie uasort (), um die Sortierung anzupassen

Wenn Sie die Zusammenfassung anpassen müssen, können Sie uasort () verwenden, wodurch der Schlüsselname unverändert bleibt.

 <?php
$arr = [
    'a' => 3,
    'b' => 1,
    'c' => 2
];

uasort($arr, function($x, $y) {
    return $y <=> $x;  // Reverse Sorting
});

print_r($arr);
?>

Ausgabe:

 Array
(
    [a] => 3
    [c] => 2
    [b] => 1
)

3.. Bleiben Sie den Schlüsselnamen benutzerdefinierte Sortierbeispiel

Wenn die Array-Struktur leicht komplex ist, können Sie Schlüsselwertpaare extrahieren und sortieren, bevor Sie das Array erstellen.


Zusammenfassung

  • RSORT () verliert den Schlüsselnamen, da es das Array, das für die normale Index -Array -Sortierung geeignet ist, neu inxziert.

  • Wenn Sie den Schlüsselnamen beibehalten müssen, sollten Sie arsort () oder uasort () verwenden.

  • Arsort () kehrt die Werte direkt um und bewahrt die Schlüsselnamen.

  • Uasort () kann die Sortierlogik anpassen und eine höhere Flexibilität aufweisen.

Durch das Beherrschen der Unterschiede und Verwendungen dieser Funktionen können Ihr PHP -Array effizienter sortiert und die Probleme vermeiden, die durch fehlende Schlüsselnamen verursacht werden.


 <?php
// Ein vollständiges Beispiel dafür, was das oben genannte enthält

$arr = [
    'a' => 3,
    'b' => 1,
    'c' => 2
];

// Fehlerdemonstration:rsortDer Schlüsselname wird verloren gehen
rsort($arr);
print_r($arr);

echo "\n";

// Richtige Demonstration:verwendenarsort保持键名Reverse Sorting
$arr = [
    'a' => 3,
    'b' => 1,
    'c' => 2
];
arsort($arr);
print_r($arr);

echo "\n";

// Benutzerdefinierte Sortierdemonstration uasort
$arr = [
    'a' => 3,
    'b' => 1,
    'c' => 2
];
uasort($arr, function($x, $y) {
    return $y <=> $x; // Reverse Sorting
});
print_r($arr);
?>

Weitere Tipps zum Sortieren von PHP-Array-Sortieren finden Sie unter gitbox.net/docs/php-arrays .