In PHP ist die Sortierung von String -Arrays eines der häufigsten Operationen. In Situationen, in denen Saiten in "natürlicher Reihenfolge" sortiert werden müssen, bietet PHP eine sehr bequeme Funktion - strnatcasecmp . Diese Funktion wird für die von Fall unempfindliche natürliche Sortierung verwendet und kann Strings nach Regeln des menschlichen gesunden Sortiers sortieren.
In diesem Artikel werden wir vorstellen, wie die Funktion "StrnatCasecmp" verwendet wird, um String -Arrays effizient zu sortieren und zu untersuchen, wie die Einschränkungen herkömmlicher String -Sortiermethoden löst.
Die natürliche Sortierung ist eine Möglichkeit, nach "menschlicher Logik" zu sortieren, die sich von der konventionellen Sortierung des Wörterbuchs unterscheidet. Zum Beispiel, wenn wir eine Reihe von Zeichenfolgen sortieren:
"apple10", "apple2", "apple1"
Normales Wörterbuchsortieren sortiert es als:
"apple1", "apple10", "apple2"
Und natürliches Sortieren wird es richtig sortieren wie:
"apple1", "apple2", "apple10"
Dies liegt daran, dass die natürliche Sortierung die Zahlenteile von den Buchstabenteilen trennt und sie nach der Größe der Zahl sortiert.
Die STRNATCASECMP -Funktion ist eine integrierte Funktion für die natürliche Sortierung in PHP. Seine Syntax ist wie folgt:
int strnatcasecmp ( string $str1 , string $str2 )
Diese Funktion ähnelt StrCasecmp , aber Strnatcasecmp vergleicht zwei Zeichenfolgen in "natürlicher Ordnung", während StrCasecmp in der Wörterbuchreihenfolge vergleicht.
$ str1 : Die erste Zeichenfolge.
$ str2 : die zweite Zeichenfolge.
Wenn $ str1 weniger als $ str2 ist, wird eine negative Zahl zurückgegeben.
Wenn $ str1 gleich $ str2 ist, kehren Sie 0 zurück.
Wenn $ str1 größer als $ str2 ist, wird eine positive Zahl zurückgegeben.
Schauen wir uns als nächstes ein praktisches Beispiel an, das zeigt, wie String -Arrays mit strnatcasecmp sortiert werden.
<?php
// Beispiel String -Array
$strings = ["apple10", "apple2", "apple1", "banana9", "banana10", "apple12"];
// verwenden usort Und strnatcasecmp Sortieren
usort($strings, function($a, $b) {
return strnatcasecmp($a, $b);
});
// 输出Sortieren后的数组
print_r($strings);
?>
Array
(
[0] => apple1
[1] => apple2
[2] => apple10
[3] => apple12
[4] => banana9
[5] => banana10
)
Wie Sie sehen können, sortiert die Usort -Funktion das String -Array in Verbindung mit StrnatCasecmp natürlich erfolgreich. Die Sortierergebnisse stimmen mit dem gesunden Menschenverstand des Menschen überein: Die Anzahl der Teile werden nach Größe sortiert und die Buchstabenteile werden nach alphabetischer Reihenfolge sortiert.
Umgang mit dem Nummernteil: Die reguläre Sortiermethode für String -Sortierungen behandelt Zahlen als Zeichen, die dazu führen, dass Saiten wie "Apple10" und "Apple2" eher in Wörterbuchreihenfolge als in natürlicher Reihenfolge sortiert werden.
Fall INVERSITISCH: Die STRNATCASECMP -Funktion ähnelt Strnatcasecmp und ist von Fall unempfindlich, dh sie behandelt Groß- und Kleinbuchstaben nicht als unterschiedliche Zeichen. Zum Beispiel werden "Apple" und "Apple" als gleich angesehen.
Durch die Verwendung der STRNATCASECMP -Funktion können Sie die Sortierung von String -Sortierungen sehr leicht implementieren und sich nicht nur mit numerischen Teilen befassen, sondern auch sicherstellen, dass die Sortierung nicht vom oberen und unteren Fall beeinflusst wird. Dies ist besonders nützlich, wenn Sie mit Arrays von Zeichenfolgen, die Zahlen oder andere komplexe Zeichen enthalten, zu tun haben, und kann die Effizienz und Lesbarkeit des Programms erheblich verbessern.
Wenn Sie Zeichenfolgen mit Zahlen und Buchstaben sortieren müssen, ist Strnatcasecmp zweifellos eine sehr effiziente und bequeme Wahl.
Ich hoffe, dieser Artikel kann Ihnen helfen, die Verwendung der StrnatCasecmp -Funktion besser zu verstehen. Wenn Sie Fragen oder Vorschläge haben, können Sie sich im Kommentarbereich gerne mit mir besprechen!