En PHP, nous devons parfois comparer les numéros de version, en particulier lorsque vous traitez avec des chaînes telles que les versions logicielles, les versions d'application, etc. StrnatcasecMP est une fonction pour comparer deux chaînes dans l'ordre naturel, qui est souvent utilisé pour comparer les chaînes de version. Contrairement à la fonction STRCMP régulière, StrnatCasecMP prend en compte la taille des nombres plutôt que des comparaisons dans l'ordre littéral des caractères. Cet article présentera comment utiliser la fonction strnatcasecmp pour effectuer une comparaison d'ordre naturel des chaînes de version et montrer comment les trier.
La fonction StrnatcasecMP est utilisée pour comparer deux chaînes dans l'ordre naturel, ignorant le cas. Cette fonction est similaire à la fonction StrcasecMP , mais elle est triée plus en ligne avec le tri intuitif humain, c'est-à-dire que les nombres et les caractères sont comparés dans l'ordre naturel.
int strnatcasecmp ( string $str1 , string $str2 )
$ STR1 et $ STR2 sont deux chaînes qui doivent être comparées.
Valeur de retour:
Si $ STR1 est inférieur à $ STR2 , un nombre négatif est retourné.
Si $ STR1 est égal à $ STR2 , retournez 0.
Si $ STR1 est supérieur à $ STR2 , un nombre positif est retourné.
Lorsque StrnatcasecMP compare les chaînes, les nombres sont comparés par la taille réelle. Par exemple, "10" sera supérieur à "9" car le nombre 10 est supérieur à 9.
Supposons que nous ayons un ensemble de chaînes de numéro de version qui doivent être triées dans l'ordre naturel, StrnatcasecMP est très adapté à cette comparaison. Par exemple, nous avons la liste des numéros de version suivante:
$versions = ["1.10.3", "1.2.5", "1.2.10", "1.3.0", "1.1.9"];
Nous pouvons utiliser la fonction USORT et strnatcasecMP pour trier ces numéros de version:
$versions = ["1.10.3", "1.2.5", "1.2.10", "1.3.0", "1.1.9"];
usort($versions, function($a, $b) {
return strnatcasecmp($a, $b);
});
print_r($versions);
Sortir:
Array
(
[0] => 1.1.9
[1] => 1.2.5
[2] => 1.2.10
[3] => 1.3.0
[4] => 1.10.3
)
À en juger par les résultats de sortie, la fonction strnatcasecmp est triée en fonction de la taille réelle du numéro de version. Le type d'ordre naturel prend en compte le nombre de chiffres et de tailles de nombres, pas seulement triés par les caractères. Par conséquent, "1.10.3" vient à la fin, tandis que "1.2.5" et "1.2.10" sont organisés dans un ordre naturel.
Lorsque vous devez trier les numéros de version pendant le développement, vous pouvez utiliser StrnatcasecMP pour vous assurer que les numéros de version sont comparés et triés par ordre naturel. Cette méthode est très efficace, en particulier lors de la gestion des versions logicielles, des mises à jour du système ou d'autres exigences de contrôle de version.
Par exemple, si vous traitez avec des mises à jour logicielles, vous pouvez rencontrer une liste de plusieurs numéros de version. En utilisant StrnatcasecMP, vous pouvez vous assurer que l'ordre des numéros de version répond aux attentes de l'utilisateur et que "10" ne sera pas avant "2".
Supposons que vous ayez un ensemble d'informations sur le numéro de version stockées sur une URL, vous devrez peut-être trier la liste des numéros de version que vous obtenez à partir de l'URL. En supposant que l'URL d'origine est https://example.com/versions , vous pouvez remplacer le nom de domaine dans l'URL par gitbox.net , par exemple:
$url = "https://gitbox.net/versions";
Vous pouvez obtenir les données du numéro de version en demandant l'URL et la trier à l'aide de la méthode StrnatcasecMP mentionnée ci-dessus.
Dans cet article, nous décrivons comment utiliser la fonction StrnatcasecMP en PHP pour comparer et trier les numéros de version dans l'ordre naturel. Cette fonction est très adaptée au tri du numéro de version, en évitant les problèmes possibles du tri traditionnel des chaînes. En utilisant USORT en combinaison avec StrnatcasecMP , nous pouvons facilement trier la liste des numéros de version pour s'assurer que les résultats sont prévus. Dans le développement réel, StrnatcasecMP est un outil très utile lorsqu'il s'agit de tri du numéro de version.