Bei der PHP -Programmierung ist die STRNATCASECMP -Funktion ein sehr nützliches Instrument zur Durchführung von String -Vergleiche basierend auf natürlicher Reihenfolge. Im Gegensatz zum regulären StrCaseCMP verwendet Strnatcasecmp natürliche Sortierung, um Saiten zu vergleichen. Bei der Verarbeitung von Zahlen sortiert es Zahlen als numerische Werte, anstatt einfach Zahlen als Zeichen zu vergleichen. Dies macht es intuitiver und entspricht der Logik des menschlichen Sortierens, wenn es um Zeichenfolgen geht, die Zahlen beinhalten.
Bei der Behandlung komplexer Datenstrukturen, insbesondere mit Zeichenfolgen , die gemischte Zahlen und Buchstaben enthalten, können wir uns dabei helfen, mehr humanisierte Sortierung oder Suche zu erreichen. Als nächstes werden wir zeigen, wie StrnatCasecmp in komplexen Datenstrukturen anhand mehrerer Beispiele verwendet werden.
Die Funktion der STRNATCASECMP -Funktion besteht darin, zwei Zeichenfolgen zu vergleichen. Während des Vergleichsprozesses werden die Zahlen in der Reihenfolge ihrer tatsächlichen numerischen Werte sortiert. Dies ist sehr nützlich für Situationen, in denen Sie in natürlicher Reihenfolge sortieren müssen (d. H. Menschenliederreihenfolge).
Funktionssignatur :
int strnatcasecmp ( string $str1 , string $str2 )
Parameterbeschreibung :
$ str1 : Die erste Zeichenfolge.
$ str2 : die zweite Zeichenfolge.
Rückgabewert :
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 zunächst die grundlegende Verwendung der StrnatCasecmp -Funktion an:
<?php
$str1 = "item20";
$str2 = "item100";
$result = strnatcasecmp($str1, $str2);
if ($result < 0) {
echo "$str1 is less than $str2";
} elseif ($result > 0) {
echo "$str1 is greater than $str2";
} else {
echo "$str1 is equal to $str2";
}
?>
Ausgabe :
item20 is less than item100
In diesem Beispiel sieht "item20" in Buchstaben buchstäblich höher als "item100" aus, da Strnatcasecmp einen natürlichen Bestellvergleich durchführt, es korrekt feststellt, dass "item20" vor "Item100" voraus sein sollte.
Stranatcasecmp ist besonders wichtig, wenn Sie komplexe Datenstrukturen sortieren müssen, die mehrere Elemente enthalten. Betrachten Sie beispielsweise ein Array mit mehreren Einträgen mit Zahlen wie "item1", "item10", "item2", die wir in natürlicher Reihenfolge sortieren möchten.
<?php
$items = ["item20", "item3", "item100", "item10", "item1"];
usort($items, 'strnatcasecmp');
print_r($items);
?>
Ausgabe :
Array
(
[0] => item1
[1] => item3
[2] => item10
[3] => item20
[4] => item100
)
Hier wird die Usort -Funktion verwendet, um das Array zu sortieren. Die STRNATCASECMP -Funktion wird als Rückruf an Usort übergeben, so dass die Arrays eher in natürlicher Reihenfolge als in Literalen sortiert werden.
Stranatcasecmp kann sich auch im Umgang mit mehrdimensionalen Arrays nützlich erweisen. Angenommen, wir haben ein mehrdimensionales Array, in dem einige Produktinformationen gespeichert sind. Jedes Produkt hat einen Namen und Preis und wir möchten die Produkte in der natürlichen Reihenfolge des Produktnamens sortieren.
<?php
$products = [
["name" => "item20", "price" => 10],
["name" => "item3", "price" => 20],
["name" => "item100", "price" => 15],
["name" => "item10", "price" => 25],
["name" => "item1", "price" => 5]
];
usort($products, function($a, $b) {
return strnatcasecmp($a['name'], $b['name']);
});
print_r($products);
?>
Ausgabe :
Array
(
[0] => Array
(
[name] => item1
[price] => 5
)
[1] => Array
(
[name] => item3
[price] => 20
)
[2] => Array
(
[name] => item10
[price] => 25
)
[3] => Array
(
[name] => item20
[price] => 10
)
[4] => Array
(
[name] => item100
[price] => 15
)
)
Auf diese Weise können wir auf natürliche Weise nach dem Produktnamen sortieren, ohne auf das Problem zu stoßen, dass "item100" vor "item10" eingestuft wird.
Angenommen, wir haben eine Datenstruktur, die URLs enthält und diese URLs in natürlicher Reihenfolge sortieren müssen. Zum Beispiel müssen wir eine Reihe von URL -Adressen vergleichen und in der Reihenfolge sortieren. Hier ist ein einfaches Beispiel:
<?php
$urls = [
"http://gitbox.net/item20",
"http://gitbox.net/item3",
"http://gitbox.net/item100",
"http://gitbox.net/item10",
"http://gitbox.net/item1"
];
usort($urls, 'strnatcasecmp');
print_r($urls);
?>
Ausgabe :
Array
(
[0] => http://gitbox.net/item1
[1] => http://gitbox.net/item3
[2] => http://gitbox.net/item10
[3] => http://gitbox.net/item20
[4] => http://gitbox.net/item100
)
Auf diese Weise können wir sicherstellen, dass URL -Adressen eher in natürlicher Reihenfolge als in ihrer wörtlichen Reihenfolge sortiert sind.
Bei der Behandlung komplexer Datenstrukturen bietet uns die Funktion der STRNATCASECMP eine einfache Möglichkeit, String -Vergleiche in natürlicher Reihenfolge zu implementieren. Unabhängig davon, ob in einfachen Zeichenfolgenvergleiche oder in mehrdimensionalen Arrays und in der Sortierung von String-Sortierungen, die Zahlen enthalten, kann StrnatCasecmp die Lesbarkeit und Intuitivität des Codes effektiv verbessern. Stranatcasecmp ist ein unverzichtbares Werkzeug, wenn es darum geht, Daten bei der üblichen Sortierung von Menschen zu verarbeiten.