Dans PHP, StrnatcasecMP () est une fonction de comparaison de chaînes très utile, en particulier pour les comparaisons de chaînes avec les nombres, tels que les numéros de version. Contrairement au StrcMP () ou à StrCasecmp () commun, StrnatcasecMP () utilise une méthode de tri naturelle pour la comparaison, c'est-à-dire qu'elle prend en compte la taille numérique, pas seulement l'ordre du dictionnaire. Ceci est très utile lors de la comparaison des numéros de version, en particulier des numéros de version comme "1.2.10" et "1.2.2".
Cet article présentera comment utiliser la fonction strnatcasecmp () pour réaliser le tri vers l'avant et inversé des numéros de version. Nous montrerons comment trier un tableau de numéro de version et implémenter respectivement le tri et inverser respectivement.
La fonction strnatcasecmp () est utilisée pour comparer deux chaînes, ignorer le cas et utiliser des règles de tri naturelles. Cela signifie qu'il prend en compte la taille réelle des nombres dans la chaîne, plutôt que de simplement les comparer par ordre alphabétique. Cette fonction est particulièrement adaptée pour comparer les chaînes de numéro de version, car le numéro de version contient des nombres, en utilisant Strcmp () ou StrCasecmp (), directement peut entraîner le tri comme prévu.
int strnatcasecmp ( string $str1 , string $str2 )
$ STR1 et $ STR2 : deux chaînes à comparer.
Valeur de retour: la valeur de retour est un entier. Si $ STR1 est inférieur à $ STR2 , un nombre négatif est retourné; Si $ STR1 est supérieur à $ STR2 , un nombre positif est retourné; Si les deux sont égaux, un 0 est retourné.
Le tri vers l'avant signifie le tri du petit numéro de version. Nous pouvons implémenter le tri avant des numéros de version via la fonction USORT () combinée avec strnatcascmpMP () .
<?php
// Tableau de numéro de version
$versions = [
"1.10.2",
"1.2.10",
"1.2.1",
"2.0.0",
"1.9.9",
];
// utiliser strnatcasecmp Tri vers l'avant
usort($versions, function($a, $b) {
return strnatcasecmp($a, $b);
});
// Sortir le numéro de version triée
echo "Numéro de version triée en avant:\n";
foreach ($versions as $version) {
echo $version . "\n";
}
?>
Dans ce code, nous définissons un tableau de numéro de version et le trie à l'aide de la fonction USORT () . La fonction de rappel d' Usort () utilise strnatcasecmp () pour comparer deux chaînes de version, garantissant que le tri est en taille numérique plutôt que par ordre alphabétique.
Numéro de version triée en avant:
1.2.1
1.2.10
1.9.9
1.10.2
2.0.0
Le tri inversé signifie le tri du grand numéro de version à petit. Pour y parvenir, il vous suffit d'inverser la valeur de retour de strnatcascmpMP () lors du tri.
<?php
// Tableau de numéro de version
$versions = [
"1.10.2",
"1.2.10",
"1.2.1",
"2.0.0",
"1.9.9",
];
// utiliser strnatcasecmp Tri inversé
usort($versions, function($a, $b) {
return strnatcasecmp($b, $a); // Inverser l'ordre des paramètres
});
// Sortir le numéro de version triée
echo "Numéro de version triée inversée:\n";
foreach ($versions as $version) {
echo $version . "\n";
}
?>
Dans le code de tri inverse, nous atteignons la commande de grande à petite en échangeant l'ordre des paramètres dans la fonction strnatcasecmp () . De cette façon, la valeur maximale du tableau de numéro de version sera classée en premier.
Numéro de version triée inversée:
2.0.0
1.10.2
1.9.9
1.2.10
1.2.1
À l'aide de la fonction strnatcasecmp () , nous pouvons très bien trier les chaînes contenant des nombres, tels que les numéros de version, naturellement. En combinant la fonction USORT () , le tri avant les numéros de version peut être réalisé et le tri inversé peut être réalisé. Le tri naturel garantit la comparaison des tailles numériques plutôt qu'un simple ordre alphabétique, évitant ainsi des problèmes tels que les erreurs de tri "1.10.2" et "1.2.10".
Ce qui précède est la méthode d'utilisation de la fonction strnatcasecmp () en PHP pour implémenter le tri avant et inversé des numéros de version.