2011-12-29 14 views
17

Duplicar posible:
Why does PHP consider 0 to be equal to a string?php string comparasion to 0 integer devuelve true?

tengo este pedazo de código:

$o['group'] = "prueba"; 
if($o['group'] == 0){ 
    die("test"); 
} 

¿Por qué prueba de impresión? ¿Cómo puede ser posible que una cuerda sea igual a cero?

+1

En PHP, la cadena vacía, y la cadena ' "0"' ambos serán iguales a cero con el operador de igualdad (== ''). –

+0

no es una cadena vacía. –

+6

@MichaelMior: Y cualquier otra cadena que no se pueda convertir en un número. –

Respuesta

18

si lo desea para que coincida exactamente con la cadena intente utilizar el exacto typof tres signos iguales al igual que
if($o['group'] === 0){
la == siempre resultado verdadero cuando se compara una cadena a un número entero de 0

'a string' == 0 también evalúa como verdadero porque cualquier cadena se convierte en un entero cuando se compara con un entero. Si PHP no puede convertir correctamente la cadena, entonces se evalúa como 0. Entonces 0 es igual a 0, lo que equivale a verdadero.

De here

+1

Todavía está mal. ''0.1e2' == 0' es falso aunque' (int) '0.1e2' === 0' es verdadero. El contenido de la cadena determina a qué tipo de datos (* int * o * float *) se convierte la cadena. – Gumbo

+0

Sí, esto sigue siendo incorrecto. Solo funciona si $ o ['group'] == '0' –