Dans PHP, StrCMP () est une fonction de comparaison de chaînes très couramment utilisée. Il est utilisé pour comparer la taille de deux chaînes et renvoyer différentes valeurs en fonction du résultat de la comparaison. Comprendre la signification de la valeur de retour de strcmp () est très important pour gérer les opérations de chaîne en développement.
La syntaxe de la fonction strcmp () est la suivante:
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str1</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str2</span></span><span> )
</span></span>
La fonction prend deux paramètres STR1 et STR2 et renvoie une valeur entière, représentant le résultat de comparaison des deux chaînes.
La valeur entière renvoyée par StrCMP () a généralement trois résultats possibles: négatifs, zéro et positifs.
Lorsque Strcmp () renvoie 0, cela signifie que les deux chaînes sont exactement égales, c'est-à-dire que leur contenu, leur cas, leur longueur, etc. sont les mêmes. En bref, deux cordes sont littéralement les mêmes.
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>) == </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Deux cordes sont égales"</span></span><span>;
}
</span></span>
Lorsque Strcmp () renvoie une valeur négative, cela signifie que STR1 est inférieur à STR2 . Cette comparaison est basée sur la valeur ASCII du caractère. En d'autres termes, si la chaîne STR1 est classée avant STR2 dans l'ordre du dictionnaire, la valeur de retour sera un nombre négatif.
Par exemple, lorsque "Apple" est comparée à "banane" , Strcmp () renvoie une valeur négative car la valeur ASCII de la lettre A est plus petite que la lettre b .
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"apple"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"banana"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>) < </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"'apple' Moins que 'banana'"</span></span><span>;
}
</span></span>
Lorsque Strcmp () renvoie une valeur positive, cela signifie que STR1 est supérieur à STR2 . Autrement dit, STR1 est classé après STR2 dans l'ordre du dictionnaire.
Par exemple, lorsque "banane" est comparée à "Apple" , Strcmp () renvoie une valeur positive car la valeur ASCII de la lettre B est supérieure à la lettre a .
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"banana"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"apple"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>) > </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"'banana' Supérieur à 'apple'"</span></span><span>;
}
</span></span>
Il convient de noter que les comparaisons faites par StrCMP () sont sensibles à la casse . Si vous ne voulez pas de sensibilité à la casse, vous pouvez utiliser des fonctions comme strcoll () ou strCasecmp () .
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>) != </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Différentes cordes"</span></span><span>;
}
</span></span>
Dans cet exemple, Strcmp () renvoie une valeur non nulle car la valeur ASCII de «H» est différente de «H» .
Strcmp () est une fonction de comparaison de cordes puissante qui nous aide à comprendre la relation de taille entre deux chaînes en renvoyant des valeurs négatives, nulles ou positives:
Retour 0 : Les deux chaînes sont égales.
Renvoie la valeur négative : STR1 est inférieur à STR2 .
Renvoie une valeur positive : STR1 est supérieure à STR2 .
Comprendre la valeur de retour de cette fonction est très utile pour optimiser et déboguer les opérations de chaîne.