Dans les sites Web de commerce électronique, le tri des listes de produits est généralement une exigence commune. Surtout pour le tri des noms du produit, nous espérons que la méthode de tri peut se conformer aux règles de tri naturelles, non seulement conformes aux habitudes utilisateur, mais évite également l'inconvénient causé par un simple tri du dictionnaire. La fonction StrnatcasecMP nous aide simplement à y parvenir.
Le tri d'ordre naturel fait référence à la comparaison des nombres dans les chaînes comme des nombres lors du tri, plutôt que de les comparer un par un en tant que personnages. Par exemple, dans le tri des chaînes normales, "item20" sera en avance sur "item3" car la valeur ASCII du caractère est comparée. Dans le tri des commandes naturelles, "Item3" sera en avance sur "Item20" car nous pensons que le numéro 3 est plus petit que le numéro 20.
PHP fournit la fonction strnatcasecMP pour comparer deux chaînes dans l'ordre naturel, ignorant les différences de cas. Cette fonction est un outil très approprié pour implémenter le tri du nom de produit dans les sites Web de commerce électronique.
La fonction StrnatcasecMP est utilisée pour comparer deux chaînes dans l'ordre naturel, ignorant le cas. Le prototype de la fonction est le suivant:
int strnatcasecmp(string $str1, string $str2)
$ STR1 et $ STR2 : deux chaînes à comparer.
Valeur de retour: si $ str1 est inférieur à $ STR2 , il renvoie un nombre négatif; Si $ STR1 est supérieur à $ STR2 , il renvoie un nombre positif; Si deux chaînes sont égales, elle renvoie 0.
Voici un exemple simple de comparaison de chaînes à l'aide de la fonction strnatcasecmp :
<?php
$str1 = "item20";
$str2 = "item3";
if (strnatcasecmp($str1, $str2) < 0) {
echo "$str1 Classé dans $str2 Avant。";
} elseif (strnatcasecmp($str1, $str2) > 0) {
echo "$str1 Classé dans $str2 après。";
} else {
echo "$str1 et $str2 même。";
}
?>
Dans cet exemple, la sortie serait:
item3 Classé dans item20 Avant。
Supposons que nous ayons une liste d'éléments, chaque élément a un nom et que ces noms d'éléments contiennent des numéros. Afin de fournir aux utilisateurs des résultats de tri plus intuitifs, nous pouvons utiliser StrnatcasecMP pour trier les produits dans l'ordre naturel.
Supposons que nos données de produit soient stockées dans un tableau contenant des noms de produits et des prix:
<?php
$products = [
["name" => "item10", "price" => 100],
["name" => "item2", "price" => 50],
["name" => "item20", "price" => 200],
["name" => "item3", "price" => 150],
];
?>
Nous pouvons utiliser la fonction USORT combinée avec strnatcasecMP pour trier les noms de produits dans l'ordre naturel:
<?php
// Trier les fonctions
function compareProducts($a, $b) {
return strnatcasecmp($a['name'], $b['name']);
}
// Trier par ordre naturel des noms de produits
usort($products, 'compareProducts');
// Sortir la liste de produits triés
foreach ($products as $product) {
echo "Nom de produit: " . $product['name'] . ",prix: " . $product['price'] . "<br>";
}
?>
Dans le code ci-dessus, la fonction USORT trie les produits dans le tableau $ Products en fonction de la fonction CompareProduct . La fonction de compareProduct utilise strnatcasecMP pour comparer les noms de chaque produit, garantissant qu'il est trié dans un ordre naturel.
La liste de sorties des éléments sera triée par ordre naturel:
Nom de produit: item2,prix: 50
Nom de produit: item3,prix: 150
Nom de produit: item10,prix: 100
Nom de produit: item20,prix: 200
De cette façon, les nombres contenus dans le nom du produit sont triés par la taille du nombre, plutôt que par la valeur ASCII du caractère.
À l'aide de la fonction strnatcasecmp , nous pouvons implémenter le tri des commandes naturelles en PHP, ce qui convient particulièrement au tri de la liste de produits dans les sites Web de commerce électronique. Grâce à cette méthode de tri, les utilisateurs peuvent voir l'ordre des produits plus intuitivement et améliorer l'expérience utilisateur.
J'espère que cet article peut vous aider à comprendre comment utiliser la fonction strnatcasecmp pour trier les listes de produits dans un ordre naturel. Si vous avez d'autres questions ou si vous avez besoin d'aide, n'hésitez pas à me contacter!