Siempre he hecho esto if($foo!==$bar)
pero me di cuenta de que if($foo!=$bar)
es correcto también. El doble =
todavía funciona y siempre me ha funcionado, pero cada vez que busco operadores PHP no encuentro información sobre el doble =
así que supongo que siempre lo he hecho mal pero funciona de todos modos. Entonces, ¿debería cambiar todos mis !==
por !=
por el simple hecho de hacerlo?php no es igual a! = Y! ==
Respuesta
==
y !=
no tienen en cuenta el tipo de datos de las variables que compara. Así que estos serían todos de vuelta verdad:
'0' == 0
false == 0
NULL == false
===
y !==
hacer tener en cuenta el tipo de datos. Eso significa que comparar una cadena con un booleano será nunca verdadero porque son de tipos diferentes, por ejemplo. Estos serán todos return false:
'0' === 0
false === 0
NULL === false
Debe comparar los tipos de datos para las funciones que devuelven valores que podrían ser de valor ambigua Truthy/Falsy. Un ejemplo bien conocido es strpos()
:
// This returns 0 because F exists as the first character, but as my above example,
// 0 could mean false, so using == or != would return an incorrect result
var_dump(strpos('Foo', 'F') != false); // bool(false)
var_dump(strpos('Foo', 'F') !== false); // bool(true), it exists so false isn't returned
Puede encontrar la información aquí: http://www.php.net/manual/en/language.operators.comparison.php
Es escasa, ya que no se agregó hasta PHP4. Sin embargo, lo que tienes está bien, si sabes que puede haber una diferencia de tipo, entonces es una comparación mucho mejor, ya que está probando el valor y en la comparación, no solo en el valor.
! == debe coincidir con el valor y tipo de datos
! = Simplemente haciendo caso omiso de coincidir con el valor del tipo de datos
$num = '1';
$num2 = 1;
$num == $num2; // returns true
$num === $num2; // returns false because $num is a string and $num2 is an integer
$a !== $b
TRUE si$a
no es igual a $b
, o son no es del mismo tipo
Por favor refiérase a http://php.net/manual/en/language.operators.comparison.php
- 1. php no es igual a no es igual, igual a
- 2. doble es igual a igual y triple en php
- 3. Es php deg2rad() igual a mysql radianes()
- 4. Cadena no es igual a
- 5. PHP considera nulo es igual a cero
- 6. No es igual condicional
- 7. Raíles alcance donde no es igual a
- 8. MySQL Query - No es igual a esto y esto
- 9. consulta "es igual a" no funciona
- 10. ¿Por qué PHP tiene dos "no es igual a" operadores (= y <>!)
- 11. TreeSet y es igual a la función
- 12. Cadena no es igual a la cadena?
- 13. Nada es igual a String.Empty, null no es igual a String.Empty, ¿qué me falta aquí?
- 14. del signo de interrogación es igual, no funciona en php
- 15. Usando LINQ no es igual
- 16. La clase A no es igual a la clase A
- 17. PHP cadena fecha + 1 día es igual?
- 18. Java: Entero es igual a ==
- 19. Scala: ¿== default es igual a?
- 20. No es igual en SQL
- 21. ¿NaN es igual a NaN?
- 22. es igual a devolver false
- 23. ¿Eliminar [] es igual a eliminar?
- 24. Seleccione desde donde el campo no es igual a Mysql Php
- 25. por qué no es nulo igual a null falsa
- 26. Rieles validación de que un valor no es igual a
- 27. ¿Por qué double.NaN no es igual a sí mismo?
- 28. ArrayList que no utiliza el reemplazado es igual a
- 29. objetos como llaves mapa sin Hashcode y es igual a
- 30. MySQL y Java MD5 MD5 no es igual
duplicado Posible de (http [Cómo hacer la igualdad de PHP (== iguales dobles) y la identidad (=== triples iguales) operadores de comparación se diferencian?]: // stackoverflow. com/questions/80646/how-do-the-php-equality-double-equals-and-identity-triple-equals-comp) – nawfal