In PHP ist die STRNATCASECMP -Funktion eine Funktion, die zur Durchführung natürlicher Ordnung Vergleiche verwendet wird. Es vergleicht Strings, um die Zahlen in der Zeichenfolge zu berücksichtigen und in der Größe der Zahlen zu sortieren, und nicht in der Wörterbuchreihenfolge. Dies ist besonders nützlich für die Verarbeitung von Text mit Zahlen wie Sortieren von Dateinamen, Listenelemente usw. mit Zahlen.
In diesem Artikel wird erläutert, wie die STRNATCASCMP -Funktion von PHP verwendet wird, um mehrere Textzeilen auf natürliche Weise zu sortieren.
Mit der STRNATCASECMP -Funktion wird zwei Zeichenfolgen in einer natürlichen Reihenfolge verglichen, die den Fall ignoriert und nach den Zahlen in der Zeichenfolge in natürlicher Reihenfolge sorgt. Dies macht es genauer als die reguläre STRCMP -Funktion beim Umgang mit Text mit Zahlen.
int strnatcasecmp ( string $str1 , string $str2 )
STR1 und STR2 sind zwei Saiten zu vergleichen.
Der Rückgabewert ist eine Ganzzahl: Wenn Str1 kleiner als str2 ist, gibt er einen negativen Wert zurück; Wenn Str1 größer als STR2 ist, gibt es einen positiven Wert zurück; Wenn sie gleich sind, gibt es 0 zurück.
Angenommen, wir haben die folgenden Textzeilen, die nach natürlicher Sortierung sortiert werden müssen. Der Beispieltext enthält einige Zeilen mit Zahlen:
line10
line2
line1
line20
line11
line3
Wir möchten diese Textzeilen nach numerischer Größe, nicht alphabetischer Reihenfolge.
Wir können diese Texte zuerst in einem Array speichern und sie dann mit der Usort -Funktion mit strnatcasecmp sortieren. Hier ist der vollständige Beispielcode:
<?php
// Multi-Line-Text-Array
$text = [
'line10',
'line2',
'line1',
'line20',
'line11',
'line3'
];
// verwenden strnatcasecmp Sortieren Sie Arrays
usort($text, 'strnatcasecmp');
// Ausgabe sortiertes Array
foreach ($text as $line) {
echo $line . PHP_EOL;
}
?>
erklären:
Wir verwenden die Usort -Funktion, um das Array $ text zu sortieren. Die Usort -Funktion akzeptiert zwei Parameter, das erste ist ein Array und die zweite ist eine Vergleichsfunktion für die Sortierung. Hier verwenden wir die STRNATCASECMP -Funktion als Komparator.
strnatcasecmp sortiert auf natürliche Weise nach den Zahlen in der Zeichenfolge.
Die sortierte Ausgabe wird sein:
line1
line2
line3
line10
line11
line20
Bei der Verarbeitung von URLs müssen wir diesen Text möglicherweise sortieren, der Domain -Namen und Pfade enthält. Unter der Annahme, dass der Text mehrere URLs enthält, wie kann ich Strnatcasecmp verwenden, um sie zu sortieren?
<?php
// Enthalten URL Textarray
$urls = [
'https://example.com/page10',
'https://gitbox.net/page2',
'https://gitbox.net/page1',
'https://example.com/page20',
'https://gitbox.net/page11',
'https://example.com/page3'
];
// verwenden strnatcasecmp Rechts URL Arrays zum Sortieren
usort($urls, 'strnatcasecmp');
// Ausgabe sortiert URL
foreach ($urls as $url) {
echo $url . PHP_EOL;
}
?>
Hinweis: Im obigen Beispiel haben wir den Domänennamen aller URLs durch gitbox.net ersetzt. Dieser Code wird auf natürliche Weise basierend auf dem Pfadteil in der URL sortiert (d. H. Der numerische Teil nach /Seite ).
Die STRNATCASECMP -Funktion ist ein sehr nützliches Werkzeug, insbesondere wenn Sie Zeichenfolgen mit Zahlen sortieren müssen. Durch die Verwendung von Usort mit strnatcasecmp können wir auf natürliche Weise mehrere Textzeilen oder URLs sortieren.
Diese Sortiermethode sortiert nicht nur die numerischen Teile vernünftig, sondern vermeidet auch die Sortierprobleme, die herkömmliche String -Vergleichsmethoden mit sich bringen können. StrnatCasecmp ist eine sehr praktische Funktion beim Umgang mit Text mit Zahlen.