La comparaison de chaînes est l'une des fonctionnalités importantes des capacités de traitement de chaînes de tout langage de programmation. En plus d'utiliser des opérateurs de comparaison (==, < ou >) pour la comparaison, PHP fournit également une série de fonctions de comparaison qui permettent à PHP d'effectuer des comparaisons de chaînes plus complexes. Fonctions telles que strcmp(), strcasecmp() et strnatcmp().
1. Comparez les chaînes par ordre d'octets
Pour comparer les chaînes par ordre d'octets, vous pouvez utiliser la fonction strcmp() et strcasecmp(), où la fonction strcasecmp() peut ignorer la casse des lettres dans les chaînes à des fins de comparaison. Les prototypes de ces deux fonctions sont les suivants :
in strcmp(string str1,string str2) //区分字符串中字母大小写地比较 int strcasecmp(string str1,string str2) //忽略字符串中字母大小写地比较
L'utilisation de ces deux fonctions est similaire, et elles doivent toutes deux transmettre deux paramètres de chaîne pour comparaison. Vous pouvez comparer les chaînes d'entrée str1 et str2 en commençant par le premier octet des deux chaînes en fonction de la valeur ASCII des octets. Si elles sont égales, la comparaison passera à l'octet suivant jusqu'à ce que la comparaison soit terminée. Renvoie l'une des trois valeurs suivantes :
1 Si str1 est égal à str2, renvoie 0.
2. Si str1 est supérieur à str2, renvoie 1.
3. Si str1 est inférieur à str2, renvoie -1.
Dans le programme suivant, les tailles des deux chaînes comparées sont déterminées par les valeurs renvoyées après comparaison. Utilisez la fonction strcmp() pour différencier les lettres majuscules et minuscules dans une chaîne, et utilisez la fonction strcasecmp() pour ignorer les comparaisons de casse des lettres dans une chaîne. Le code est le suivant :
<?php $username = "Admin"; $password = "lampBrother"; //不区分大小写的比较,如果两个字符串相等返回0 if(strcasecmp($userName,"admin")== 0){ echo "用户名存在"; } //将两个比较的字符串相应的函数转成全大写或全小写后,也可以实现不区分大小写的比较 if(strcasecmp(strtolower($userName),strtolower("admin")) == 0){ echo "用户名存在"; } //区分字符串中字母的大小写比较 switch(strcmp($password,"lampbrother")){ case 0: echo "两个字符串相等<br>"; break; case 1: echo "第一个字符串大于第二个字符串<br>"; break; case -1: echo "第一个字符串小于第二个字符串<br>"; break; } ?>
2. Comparaison de chaînes selon l'ordre naturel
En plus de comparer selon l'ordre des octets du dictionnaire, PHP fournit également des chaînes sont comparés selon la méthode du « classement naturel ». Le tri dit naturel fait référence au tri en fonction des habitudes de pensée des gens dans la vie quotidienne, c'est-à-dire à la comparaison des parties numériques de la chaîne en fonction de la taille numérique.
Par exemple, "4" est supérieur à "33" lorsqu'on le compare en octets, car "4" est supérieur au premier caractère de "33" et "33" est supérieur à "4" selon la règle de tri naturel. Utilisez la fonction strnatcmp() pour comparer deux chaînes en tri naturel. Cette fonction est sensible à la casse et son format d'utilisation est similaire à la fonction strcmp().
Dans l'exemple suivant, le tri à bulles est utilisé pour trier les noms de fichiers avec des numéros dans un tableau en utilisant deux méthodes de comparaison. Le code est le suivant :
<?php //定义一个包含数字值的数组 $files = array("file11.txt","file22.txt","file1.txt","file2.txt"); function mySort($arr,$select = false){ for($i=0;$i<count($arr);$i++){ for($j;$j<count($arr)-1;$j++){ //如果第二个参数为ture则使用strcmp()函数比较大小 if($select){ //前后两个值比较结果大于0则交换位置 if(strcmp($arr[$j],$arr[j+1])>0){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $tmp; } //如果第二个参数为false则使用strnatcmp()函数比较大小 }else{ //如果比较结果大于0交换位置 if(strnatcmp($arr[$j],$arr[$j+1])>0){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1]; = $tmp; } } } } return $arr; //排序后的数组 } print_r(mySort($files,true)); //选择按字典顺序排序: file1.txt file11.txt file2.txt file22.txt print_r(mySort($files,false)); //选择按自然顺序排序:file1.txt file2.txt file11.txt file22.txt ?>
PHP fournit également une version ignorant la casse de cette fonction. L'utilisation de strnatcasecmp() est la même que celle de la fonction strnatcmp().
Tutoriel recommandé : Tutoriel vidéo PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!