Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Krsort, um das Problem der wiederholten Sortierung von Arrayschlüssel in PHP zu lösen

Verwenden Sie Krsort, um das Problem der wiederholten Sortierung von Arrayschlüssel in PHP zu lösen

gitbox 2025-05-26

In PHP begegnen wir beim Sortieren von Arrays, insbesondere assoziativen Arrays (Schlüsselwertepaar-Arrays) häufig doppelte Schlüsselnamen, oder die Sortierung entspricht nicht den Erwartungen. Krsort ist eine Funktion in PHP für die Reverse -Sortierung durch Schlüsselnamen. Kann es das Problem der "Schlüsselvervielfachung zum Sortieren" lösen? Dieser Artikel wird ausführlich analysiert und spezifische Betriebsbeispiele angeben.

1. Einzigartigkeit von PHP -Array -Schlüsselnamen

Zunächst sollte klar sein, dass die Schlüsselnamen von PHP -Arrays eindeutig sind. Wenn Sie einen doppelten Schlüsselnamen verwenden, wenn Sie einem Array Werte zuweisen, überschreibt der danach zugewiesene Wert die vorherige. Zum Beispiel:

 <?php
$arr = [
    "key1" => "value1",
    "key2" => "value2",
    "key1" => "value3"
];
print_r($arr);
?>

Das Ausgangsergebnis ist:

 Array
(
    [key1] => value3
    [key2] => value2
)

Es ist ersichtlich, dass der Wert1 , wenn Key1 wiederholt wird, durch Wert 3 überschrieben wird und in der Tat nur die letzte Zuordnung im Array beibehalten wird.

Daher ist es unmöglich, in PHP -Arrays doppelte Schlüsselnamen zu haben . Wenn Sie das Gefühl haben, dass es ein Problem mit doppelten Schlüsselnamen gibt, ist es wahrscheinlich, dass Sie ein falsches Verständnis der Array -Struktur haben oder ein mehrdimensionales Array oder eine Art verschachtelter Struktur verwenden.


2. Die Rolle von Krsort

Die Krsort- Funktion wird verwendet, um die Sortierung nach den Schlüsselnamen des Arrays umzukehren (abfällt), wodurch die Schlüsselwertbeziehung erhalten bleibt. Die Funktionsdefinition lautet wie folgt:

 bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

Beispiel:

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

krsort($arr);
print_r($arr);
?>

Ausgangsergebnis:

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

Beachten Sie, dass Krsort die Einzigartigkeit der Schlüssel nicht beeinflusst , sondern einfach die vorhandenen Schlüssel umkehrt.


3. Wie kann man das Problem von "Duplikat" von Schlüsselnamen lösen?

Aufgrund der eindeutigen Merkmale von PHP-Array-Schlüsselnamen kann sich auf die sogenannten "Sortierungsprobleme, die durch Schlüssel Duplication verursacht werden" beziehen:

  • Schlüsselnamen auf verschiedenen Ebenen in mehrdimensionalen Arrays werden wiederholt, aber eindeutig in derselben Ebene.

  • Sie möchten nach einem Feld sortieren, aber der Schlüsselname ist nicht eindeutig oder die Datenstruktur ist unangemessen.

3.1 Lösung Beispiel 1: Umstrukturierung Arrayschlüssel neu organisieren

Wenn Sie ein mehrdimensionales Array haben, wie das folgende:

 <?php
$arr = [
    ["id" => 1, "name" => "Alice"],
    ["id" => 2, "name" => "Bob"],
    ["id" => 1, "name" => "Charlie"]
];

Hier gibt es Duplikate für "ID", aber es ist ein Wert im Array, kein Schlüsselname. Sie möchten das Feld "ID" sortieren:

 <?php
// entsprechendidIn umgekehrter Reihenfolge sortieren
usort($arr, function($a, $b){
    return $b['id'] <=> $a['id'];
});

print_r($arr);
?>

Dies hat nichts mit Krsort zu tun, Krsort ist nur nach Schlüsselnamen sortiert.


3.2 Lösung Beispiel 2: Rekonstruieren ein Array mit einem eindeutigen Schlüssel

Wenn Sie wirklich ein Feld als Schlüssel verwenden müssen, um die Duplikation von Schlüsselnamen zu vermeiden, können Sie zuerst die Schlüsselnamen filtern oder spleißen:

 <?php
$arr = [
    ["id" => 1, "name" => "Alice"],
    ["id" => 2, "name" => "Bob"],
    ["id" => 1, "name" => "Charlie"]
];

// vonidUndnameKombination als einzigartiger Schlüssel
$newArr = [];
foreach ($arr as $item) {
    $key = $item['id'] . '_' . $item['name']; // Garantierter Schlüssel einzigartig
    $newArr[$key] = $item;
}

// 对键In umgekehrter Reihenfolge sortieren
krsort($newArr);

print_r($newArr);
?>

Auf diese Weise können Sie nicht nur die Doppelarbeit von Schlüssellamen vermeiden, sondern sie auch mit Krsort sortieren.


4. Zusammenfassung

  • Die Schlüsselnamen im PHP -Array müssen eindeutig sein, und es gibt keine echte "Schlüssigname -Duplikation".

  • Krsort wird verwendet, um die Sortierung nach Schlüsselnamen umzukehren, und löst das Problem der Duplizierung von Schlüsselnamen nicht.

  • Wenn Sie in Ihren Daten "wiederholte Schlüssel" haben, ist dies häufig ein Problem mit der Datenstruktur, und die Array -Struktur sollte neu gestaltet werden.

  • Für die Sortierung nach einem bestimmten Feld sollten benutzerdefinierte Sortiermethoden wie Usort verwendet werden.

  • Wenn Sie nach Schlüsselnamen sortieren und sicherstellen möchten, dass die Schlüsselnamen eindeutig sind, können Sie die Felder spleißen, um sicherzustellen, dass sie eindeutig sind, und dann Krsort verwenden.

Wenn Sie an der Sortierung von Array -Schlüssel interessiert sind, empfehlen Sie das offizielle PHP