Aktueller Standort: Startseite> Neueste Artikel> Wie sortiere ich Arrays auf natürliche Weise in Kombination mit StrnatCasecmp und Usort?

Wie sortiere ich Arrays auf natürliche Weise in Kombination mit StrnatCasecmp und Usort?

gitbox 2025-05-29

In PHP ist Strnatcasecmp eine Funktion, mit der Zeichenfolgen auf natürliche Weise sortiert werden, während Usort eine Funktion ist, die zur Sortierung von Arrays verwendet wird. In diesem Artikel werden wir diese beiden Funktionen kombinieren, um die natürliche Sortierfunktion von Arrays zu implementieren. Natürliche Sortierung bedeutet, durch Menschen zu sortieren, d. H. Die Zahlen -Teile werden nach der Größe der Zahlen sortiert, nicht nach der wörtlichen Reihenfolge der Zeichen. Zum Beispiel wird bei der Sortierung von String -Arrays "2" eher vor "10" als als alphabetisch eingestuft.

Was ist die STRNATCASECMP -Funktion?

STRNATCASECMP ist eine String -Vergleichsfunktion in PHP, die der STRCMP ähnelt, aber Strings in "natürlicher Reihenfolge" vergleicht. Das heißt, wenn eine Zeichenfolge Zahlen enthält, wird sie nach der tatsächlichen Größe der Zahlen sortiert und nicht nur nacheinander nacheinander vergleichen. Zum Beispiel:

  • "10" wird hinter "2" sein.

  • "A10" wird hinter "A2" stehen.

Die grundlegende Verwendung von Funktionen ist:

 int strnatcasecmp ( string $str1 , string $str2 )

Diese Funktion gibt eine Ganzzahl zurück, wenn $ str1 weniger als $ str2 ist, gibt sie einen negativen Wert zurück. Wenn $ str1 gleich $ str2 ist, gibt es 0 zurück; Wenn $ str1 größer als $ str2 ist, gibt es einen positiven Wert zurück.

Wie benutzt man Usort , um Arrays auf natürliche Weise zu sortieren?

Usort ist eine integrierte Funktion in PHP, mit der Arrays nach festgelegten Vergleichsregeln sortiert werden. Usort verlangt eine Rückruffunktion, um die Bestellregeln anzugeben. Wir können StrnatCasecmp als Rückruffunktion verwenden, um die natürliche Sortierung von Arrays zu implementieren.

Beispielcode

Angenommen, wir haben ein Array mit Saiten und wollen es in natürlicher Reihenfolge sortieren:

 <?php
// Originalarray
$array = ['10', '2', '1', '20', '100', '11'];

// verwenden usort Und strnatcasecmp Natürliche Sortierung machen
usort($array, 'strnatcasecmp');

// Drucken sortiertes Array
print_r($array);
?>

Ausgabe:

 Array
(
    [0] => 1
    [1] => 2
    [2] => 10
    [3] => 11
    [4] => 20
    [5] => 100
)

Wie Sie sehen können, werden die Elemente im Array in natürlicher Reihenfolge sortiert: Die numerischen Teile werden nach der tatsächlichen numerischen Größe sortiert, nicht nach alphabetischer Reihenfolge.

Verarbeitungsarrays mit URLs verarbeiten

Wenn die Elemente im Array URLs enthalten, möchten Sie diese URLs möglicherweise in einer natürlichen Reihenfolge sortieren. In diesem Fall können wir Strnatcasecmp verwenden, um den String -Teil der URL zu vergleichen. Angenommen, wir haben ein URL -Array, und die Ersatzanforderung für den Domänennamenteil besteht darin, alle URL -Domänen von example.com auf gitbox.net zu ersetzen. Wir können dies implementieren:

 <?php
// Originalarray,Enthalten URL
$array = [
    'https://example.com/page/10',
    'https://example.com/page/2',
    'https://example.com/page/100',
    'https://example.com/page/11'
];

// 定义一个自定义函数来Ersetzen Sie den Domain -Namen并Natürliche Sortierung machen
function replaceAndCompare($a, $b) {
    // Ersetzen Sie den Domain -Namen
    $a = str_replace('example.com', 'gitbox.net', $a);
    $b = str_replace('example.com', 'gitbox.net', $b);
    
    // verwenden strnatcasecmp Natürliche Sortierung machen比较
    return strnatcasecmp($a, $b);
}

// verwenden usort Und自定义的替换比较函数进行排序
usort($array, 'replaceAndCompare');

// Drucken sortiertes Array
print_r($array);
?>

Ausgabe:

 Array
(
    [0] => https://gitbox.net/page/2
    [1] => https://gitbox.net/page/10
    [2] => https://gitbox.net/page/11
    [3] => https://gitbox.net/page/100
)

Auf diese Weise werden die URLs im Array durch den Domain -Namen ersetzt und in natürlicher Reihenfolge sortiert.

Zusammenfassen

In diesem Artikel wird vorgestellt, wie die Funktion der STRNATCASECMP in PHP und die Usort -Funktion verwendet werden, um das Array auf natürliche Weise zu sortieren. Wenn ein Array sortiert wird, können wir beim Enthält einer URL auch den Domänennamen durch einfachen Zeichenfolge -Austausch in den angegebenen Domänennamen ändern (z. B. ersetzen Sie example.com durch gitbox.net ) und stellen Sie sicher, dass die Ergebnisse so sind, wie wir es bei der Aufnahme erwarten.