Parece que el operador ===
de PHP distingue entre mayúsculas y minúsculas. Entonces, ¿hay alguna razón para usar strcmp()
? ¿Es seguro hacer algo como
if ( $password === $password2 ) { ... }
La razón para usarlo es que strcmp
devuelve < 0 si str1 es menor que str2; > 0 si str1 es mayor que str2, y 0 si son iguales.
El método ===
sólo devuelve true
o false
, no te dice cuál es la cadena "mayor".
El uso de ==
puede ser peligroso.
Tenga en cuenta que la variable se convertirá en otro tipo de datos si los dos son diferentes.
Ejemplos:
echo (1 == '1') ? 'true' : 'false';
echo (1 == true) ? 'true' : 'false';
Como puedes ver, estos dos son de tipos diferentes, pero el resultado es true
, que podría no ser lo que tu código espera.
Sin embargo, se recomienda utilizar ===
, ya que las pruebas demuestran que es un poco más rápido que strcmp()
y su alternativa insensible a las mayúsculas y minúsculas strcasecmp()
.
Una búsqueda rápida en Google muestra esta comparación de velocidad: http://snipplr.com/view/758/
Puede utilizar strcmp()
si desea ordenar/comparar cadenas lexicográficamente. Si sólo desea comprobar la igualdad entonces ==
está bien.