Ver Mensaje Individual
  #13 (permalink)  
Antiguo 30/07/2013, 04:20
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años, 1 mes
Puntos: 84
Respuesta: Detectar si un usuario se conecta desde un movil

Cita:
Iniciado por dashtrash Ver Mensaje
Que cero no es un valor? ... Entonces..qué es?
Se podría montar una discusión sobre null..Pero..sobre cadena vacía? Cómo que no contiene un valor?
No hay tal cosa como "tipo false".Hay tipo entero, y tipo booleano.0 es un tipo entero.!== te dirá que 0 no es igual a false, ya que hace comprobación de tipo.
Código PHP:
Ver original
  1. //aquí y en este momento cero es un valor
  2.  
  3. $a=0;
  4.  
  5. //en PHP dentro de la condición 'if' '0' es igual a 'null' y "", es decir, lo interpreta como que no hay valor, lo puedes comprobar así
  6.  
  7. $a=0;
  8.  
  9. if ( $a== "" ) //también if ( $a== null )
  10. {
  11.      echo $a;
  12. }
  13.  
  14. //imprimirá 0

Es en las expresiones del if donde 0 se interpreta como false, como "" y como null.

!== me dirá que 0 no es idéntico a false porque no son del mismo tipo pero son iguales después de la conversión a tipos que 'if' somete al número 0.

eso lo dice aquí

Cita:
$a == $b Igual TRUE si $a es igual a $b después de la manipulación de tipos.
¿qué ocurre? pues que para la negación no es lo mismo != (que sería la negación de la anterior comparación lógica de igualdad)

Cita:
$a != $b Diferente TRUE si $a no es igual a $b después de la manipulación de tipos.
que !== (que sería la la comparación lógica de negación de tipos iguales).

La comparación lógica de tipos iguales es ===

Cita:
$a === $b Idéntico TRUE si $a es igual a $b, y son del mismo tipo.
todo sobre operadores lógicos de comparación está en el anterior enlace y sobre el cero, false, true, aquí

y la manipulación de tipos aquí

Cristopher-2006

no es lo mismo decir

Código PHP:
Ver original
  1. $a=false;
  2.  
  3. if($a!=true)

que

Código PHP:
Ver original
  1. $a=false;
  2.  
  3. if($a==false)
puesto que en el primer if lo que estás diciendo es algo parecido a

"si el valor de la variable 'a' no es igual a true..." con eso estás discriminando a true pero aceptando el resto de posibles valores.

en cambio en el segundo if estás diciendo que "si $a es igual a false..." y solo a false, discriminas el resto de valores y solo aceptas false.

saludos! :)

Última edición por guardarmicorreo; 30/07/2013 a las 04:29