2009-12-04 34 views
6

sigo viendo variaciones de este:php no es igual a no es igual, igual a

No igual !=

No es igual, igual

!==

Cuál es el estándar o tienen diferentes significados?

supongo que seguirán estos últimos también comprueba el valor y el nombre si se trata de una cadena, mientras que el ex sólo podría marcar únicamente el valor ...

Respuesta

19

== y != igualdad cheque por valor, y en PHP se puede comparar diferentes tipos en los que ciertos valores se dice que son equivalentes.

Por ejemplo, "" == 0 evalúa a true, aunque una es una cadena y el otro un número entero.

=== y !== cheque el tipo, así como el valor.

Por lo tanto, "" === 0 evaluará a false.


Editar: Para añadir otro ejemplo de cómo este "tipo-malabares" puede atrapar a salir, intente esto:

var_dump("123abc" == 123); 

Da bool(true)!

+0

Gracias a todos, por la respuesta rápida, por lo que al usar! == o simplemente == se agrega un cheque para el tipo y el valor, gracias. – Newb

+2

PHP permite que los valores se conviertan libremente de un tipo a otro. Si convierte una cadena "456" en un número, se convertirá en 456. Muy conveniente. El operador de comparación PHP == solo verifica el valor. Entonces, '" 456 "== 456'.Ahora, "" (cadena vacía) sería igual a 0, y a FALSO, y a NULO. Pero a veces no quieres esto. Para verificar si algo es FALSO en lugar de solo 0, puede usar 'var === FALSO' – nash

+0

Operador de comparación, solo comprueba los valores (==), gracias – Newb

5

!= no es igual al valor

!== no es igual por el valor y el tipo

6

El segundo es type-strict.

"1" != 1; // false 
"1" !== 1; // true because the first is a string, the second is a number 
1

en un ejemplo:

"2" == 2 -> true 

"2" === 2 -> false 


"2" !== 2 -> true 

"2" != 2 -> false 

esto también es importante cuando se utiliza cierta función que puede devolver 0 o false

por ejemplo strpos: desea siempre para comprobar tipos demasiado allí, no solo valores. porque 0 == false pero 0 !== false.

desde strpos puede devolver 0 si una cadena está en la primera posición. pero eso no es lo mismo que falso, lo que significa que la cadena no se ha encontrado.

+0

"2" es una cadena, por lo que al usar == estamos haciendo ambas comprobaciones para el tipo y el valor, por lo que el resultado es verdadero para el primer caso. Sin embargo, para el segundo caso, el === lo hace más estricto (el tipo y el valor deben coincidir); por lo tanto, encontramos que la cadena "2" no va a ser igual al valor 2, interesante. – Newb

+0

Acaba de obtener información de Ben James, == solo verifica los valores. – Newb