Il semble que l'opérateur ===
de PHP soit sensible à la casse ? Y a-t-il donc une raison d'utiliser strcmp()
? Est-il sûr de faire quelque chose comme :
if ( $password === $password2 ) { ... }
La raison de l'utiliser est que [strcmp
][1]
renvoie < 0 si str1 est inférieur à str2 ; > 0 si str1 est supérieur à str2, et 0 s'ils sont égaux.
===
ne renvoie que vrai
ou faux
, il ne vous dit pas quelle est la chaîne "plus grande" ;.
[1] : http://php.net/strcmp
L'utilisation de ==
peut être dangereuse.
Notez que la variable sera convertie en un autre type de données si les deux diffèrent.
Exemples :
echo (1 == '1' ;) ? 'true' ; : 'false';
echo (1 == true) ? 'true' ; : 'false';
Comme vous pouvez le voir, les deux sont de types différents, mais le résultat est vrai
, ce qui n'est peut-être pas ce que votre code attend.
L'utilisation de ===
est cependant recommandée car les tests montrent qu'elle est un peu plus rapide que strcmp()
et son alternative insensible à la casse strcasecmp()
.
Une rapide recherche sur Google donne cette comparaison de vitesse : http://snipplr.com/view/758/
Vous pouvez utiliser strcmp()
si vous souhaitez ordonner/comparer des chaînes de caractères [lexicographiquement][1]. Si vous souhaitez simplement vérifier l'égalité, ==
est parfait.