Aktueller Standort: Startseite> Neueste Artikel> Krsort -Sortierung wird nicht wirksam? FAQs lösen

Krsort -Sortierung wird nicht wirksam? FAQs lösen

gitbox 2025-05-27

1. Überprüfung der Grundnutzung von Krsort ()

 <?php
$array = [
    "b" => 2,
    "a" => 1,
    "c" => 3,
];
krsort($array);
print_r($array);
?>

Nach dem Laufen das Ausgabeergebnis:

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

Hier werden die Schlüsselnamen von großes nach kleiner nach Buchstaben sortiert, was den Erwartungen entspricht.


2. Häufige Gründe, warum Krsort () nicht wirksam wird

1. Der Schlüsselname -Typ ist nicht einheitlich

Wenn Krsort () nach Schlüsselnamen sortiert, werden die Schlüsselnamen automatisch als Zeichenfolgen oder Ganzzahlen behandelt. Wenn die Schlüsselnamen des Arrays gemischt sind, ist das Sortierergebnis möglicherweise nicht wie erwartet.

Zum Beispiel:

 <?php
$array = [
    2 => 'two',
    "10" => 'ten',
    1 => 'one',
];
krsort($array);
print_r($array);
?>

Zu diesem Zeitpunkt ist der Schlüsselname 10 eine Zeichenfolge, aber tatsächlich ein numerischer Schlüssel, der in eine Ganzzahlverarbeitung umgewandelt wird, die dazu führen kann, dass die Sortierreihenfolge mit dem erwarteten nicht im Widerspruch steht.

2. Das mehrdimensionale Array gibt die Sortierstufe nicht an

Krsort () sortiert nur die ersten Schlüsselnamen des Arrays. Wenn es sich um ein mehrdimensionales Array handelt, wird das interne Subtarray nicht sortiert.

 <?php
$array = [
    "first" => ["b" => 2, "a" => 1],
    "second" => ["d" => 4, "c" => 3],
];
krsort($array);
print_r($array);
?>

Hier sortieren wir nur die ersten und zweiten Tastennamen der ersten Stufe, und die internen Schlüsselnamen von B, A, D und C werden sich nicht ändern.

3.. Falsch variabler Typ

Krsort () unterstützt nur Array -Parameter. Wenn ein Nicht-Array (wie ein Objekt oder eine Zeichenfolge) übergeben wird, funktioniert die Funktion nicht und kann sogar einen Fehler melden.


3.. Wie kann das Problem, das Krsort () nicht wirksam macht?

  1. Überprüfen Sie, ob die Variable ein Array ist

Verwenden Sie die Funktion is_array (), um zu überprüfen, um Missbrauch zu vermeiden.

 if (!is_array($array)) {
    echo "Die in übergebene Variable ist kein Array,Nicht sortieren";
}
  1. Überprüfen Sie, ob der Schlüsselname -Typ konsistent ist

Überprüfen Sie, ob die Schlüsselnamen alle Zeichenfolgen oder Ganzzahlen sind, um das Mischen zu vermeiden und Sortierausnahmen zu verursachen.

 foreach ($array as $key => $value) {
    var_dump($key, gettype($key));
}
  1. Bestätigen Sie, ob die erwartete Hierarchie sortiert ist

Für mehrdimensionale Arrays muss klargestellt werden, welche Ebene Sie sortieren müssen.


Iv. Lösungsbeispiele

Die oben genannten Probleme werden mehrere Lösungen gegeben:

1. Erzwingen Sie den Schlüsselnamen in die Zeichenfolge

Wenn die Schlüsselnamen gemischt sind, ist der Schlüsselname -Typ zuerst einheitlich:

 <?php
$newArray = [];
foreach ($array as $key => $value) {
    $newArray[(string)$key] = $value;
}
krsort($newArray);
print_r($newArray);
?>

Dies vermeidet die Verwirrung numerischer Saiten.

2.. Sortieren Sie mehrdimensionale Arrays rekursiv

Wenn Sie auch die Namen der Subtarray -Schlüsse sortieren müssen, verwenden Sie die rekursive Methode:

 <?php
function recursive_krsort(&$array) {
    if (!is_array($array)) return;
    krsort($array);
    foreach ($array as &$value) {
        if (is_array($value)) {
            recursive_krsort($value);
        }
    }
}

recursive_krsort($array);
print_r($array);
?>

3. Bestätigen Sie die Variable als Array

 <?php
if (is_array($array)) {
    krsort($array);
} else {
    echo "Variablen sind keine Arrays,Nicht sortieren。";
}
?>

5. Praktische Referenzverbindung

Ausführlichere Anweisungen und Beispiele zu PHP Krsort () können Sie auf die offizielle Dokumentation zugreifen:

<code> https://gitbox.net/manual/en/function.krsort.php </code>