En PHP, StrnatcasecMP est une fonction pour comparer deux chaînes. Il est différent de la fonction de comparaison traditionnelle des chaînes. StrnatcasecMP utilise un algorithme de tri naturel (tri naturel) et n'est pas sensible à la casse lors de la comparaison. L'une des applications courantes de cette fonction consiste à trier les numéros de version, en particulier lorsque les numéros de version peuvent contenir des nombres et des lettres, le strnatcasecmp peut être trié de manière intuitive humaine, plutôt que simplement l'ordre alphabétique.
int strnatcasecmp ( string $string1 , string $string2 )
$ string1 : la première chaîne à comparer.
$ string2 : la deuxième chaîne à comparer.
Si $ string1 est inférieur à $ string2 , un entier négatif est retourné.
Si $ string1 est égal à $ string2 , retournez 0.
Si $ string1 est supérieur à $ string2 , un entier positif est retourné.
Dans le tri du numéro de version, nous voulons généralement être en mesure de comparer dans l'ordre naturel du numéro de version, par exemple, 1.10 devrait être après 1,9 . StrnatcasecMP fournit une solution idéale car elle prend en compte la taille des nombres lors de la comparaison, plutôt que de s'appuyer uniquement sur l'ordre alphabétique.
Supposons que nous ayons un tableau contenant des numéros de version, que nous voulons trier dans l'ordre naturel, qui peut être réalisé à l'aide de strnatcasecMP .
<?php
// Exemple de numéro de numéro de version
$versions = [
"1.2.10",
"1.10.0",
"1.9.9",
"1.2.2",
"1.1.1",
];
// utiliser uasort() Trier,并utiliser strnatcasecmp En tant que fonction de comparaison
uasort($versions, function($a, $b) {
return strnatcasecmp($a, $b);
});
// 输出Trier后的版本号
foreach ($versions as $version) {
echo $version . "\n";
}
?>
1.1.1
1.2.2
1.2.10
1.9.9
1.10.0
Dans cet exemple, le tableau de numéro de version est trié à l'aide d'UaSort et chaque numéro de version est comparé par strnatcasecMP . Les résultats après le tri sont conformes à l'ordre naturel de l'intuitivité des humains: 1.1.1 est en haut, 1.2.10 est en bas et 1.10.0 est en bas 1.9.9 .
L'avantage de strnatcasecmp est qu'il ne compare pas les nombres dans le numéro de version en tant que caractères distincts, mais plutôt par la taille du nombre. Par conséquent, 1.10 sera derrière 1.9 , ce qui est conforme à notre intuition sur le tri du numéro de version.
La fonction StrnatcasecMP est un outil très utile en PHP, en particulier pour les scénarios où les numéros de version doivent être triés par ordre naturel. Il gère non seulement les chaînes mélangées avec des lettres et des nombres, mais ignore également automatiquement le cas lors de la comparaison, ce qui le rend idéal pour une utilisation à plusieurs reprises.