Aktueller Standort: Startseite> Neueste Artikel> Wie verwendet ich StrnatCasecmp, um sensitive Fall-sensitive Versionsnummersortierungen in PHP zu implementieren?

Wie verwendet ich StrnatCasecmp, um sensitive Fall-sensitive Versionsnummersortierungen in PHP zu implementieren?

gitbox 2025-05-19

In PHP ist Strnatcasecmp eine Funktion zum Vergleich von zwei Zeichenfolgen. Es unterscheidet sich von der traditionellen String -Vergleichsfunktion. STRNATCASECMP verwendet einen natürlichen Sortieralgorithmus (natürliche Zahlensortierung) und ist beim Vergleich nicht fallempfindlich. Eine der gängigen Anwendungen dieser Funktion besteht darin, Versionsnummern zu sortieren, insbesondere wenn Versionsnummern Nummern und Buchstaben enthalten können.

Funktionsprototyp

 int strnatcasecmp ( string $string1 , string $string2 )

Parameterbeschreibung

  • $ String1 : Die erste Zeichenfolge, die zu vergleichen ist.

  • $ String2 : Die zweite Zeichenfolge, die zu vergleichen ist.

Rückgabewert

  • Wenn $ String1 weniger als $ String2 ist, wird eine negative Ganzzahl zurückgegeben.

  • Wenn $ String1 gleich $ String2 ist, return 0.

  • Wenn $ String1 größer als $ String2 ist, wird eine positive Ganzzahl zurückgegeben.

Beispiel: Natürliche Sortierung von Fallnummern von Fall-unempfindlich

Bei der Sortierung der Versionsnummer möchten wir normalerweise in der natürlichen Reihenfolge der Versionsnummer vergleichen können, beispielsweise 1,10 nach 1.9 sein. StrnatCasecmp liefert eine ideale Lösung, da sie die Größe der Zahlen beim Vergleich berücksichtigt, anstatt sich ausschließlich auf alphabetische Reihenfolge zu verlassen.

Angenommen, wir haben ein Array mit Versionsnummern, die wir in natürlicher Reihenfolge sortieren möchten, die mit StrnatCasecmp erreicht werden kann.

 <?php
// Beispielversionsnummer Array
$versions = [
    "1.2.10",
    "1.10.0",
    "1.9.9",
    "1.2.2",
    "1.1.1",
];

// verwenden uasort() Sortieren,并verwenden strnatcasecmp Als Vergleichsfunktion
uasort($versions, function($a, $b) {
    return strnatcasecmp($a, $b);
});

// 输出Sortieren后的版本号
foreach ($versions as $version) {
    echo $version . "\n";
}
?>

Ergebnisse Ausgabe:

 1.1.1
1.2.2
1.2.10
1.9.9
1.10.0

Analyse:

In diesem Beispiel wird das Versionsnummern -Array mit UASORT sortiert und jede zwei Versionsnummer wird mit strnatcasecmp verglichen. Die Ergebnisse nach der Sortierung stehen im Einklang mit der natürlichen Reihenfolge der Intuitivität des Menschen: 1.1.1 befindet sich oben, 1.2.10 befindet sich unten und 1.10.0 liegt unten 1.9.9 .

Der Vorteil von strnatcasecmp besteht darin, dass es nicht die Zahlen in der Versionsnummer als separate Zeichen verglichen, sondern nach der Größe der Zahl. Daher wird 1.10 hinter 1,9 liegen, was unserer Intuition zur Sortierung der Versionsnummer entspricht.

Zusammenfassung:

Die STRNATCASECMP -Funktion ist ein sehr nützliches Werkzeug in PHP, insbesondere für Szenarien, in denen Versionsnummern in natürlicher Reihenfolge sortiert werden müssen. Es behandelt nicht nur Zeichenfolgen, die mit Buchstaben und Zahlen gemischt werden, sondern ignorieren den Fall beim Vergleich auch automatisch, was ihn ideal für die Verwendung in vielen Gelegenheiten ideal macht.