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

Metacortex, tienes razón, != es ambiguo.

yo utilicé != porque en el momento de ayudar a cristofer solo conocía uno de los valores que el método isMobile devolvía. entonces me guié por ese valor que tenía. entonces me puede devolver lo que quiera, pero si es false sé lo que tengo que hacer.

luego leí el método y vi que devolvía true o false, entonces se puede especificar.

fué una solución momentánea sin intención de ser definitiva, evidentemente había que ver si la aplicación funcionaba o qué estaba pasado :)


dashtrash

Donde quiero llegar es que fuera de la expresión if () cero es un valor para operaciones aritméticas, pero a la hora de introducirlo en el if (operaciones de comparación) cero no es un valor, es igual a "" y null, es decir vacío, no hay nada.

¿sabes por qué?

porque cero en realidad representa la nada, principio matemático fundamental.

si con la programación se intenta reproducir parte de la realidad, entonces según tu lógica la nada es un valor

¿seguro que es un valor?

cero es un valor representativo:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

es lo mismo que decir

parto de la nada, ahora tengo una unidad de lo que sea, ahora dos, ahora tres, ahora cuatro, etc.

si cero fuera un valor cuantificable materializame ¿cuánto es cero?, adelante, represéntame 0, la nada.

entonces por eso a la hora de comparar el cero de la siguiente forma if lo interpreta como "" y null, es decir, nada/ valor vacío/ ausencia de valor/ no hay valor

para que if pueda trabajar con 0 de otra forma que no sea "" o null lo deberías meter en las funciones is_int o is_numeric
Código PHP:
Ver original
  1. $a=0;
  2.  
  3. if( $a == "" )
  4. echo $a;
  5.  
  6. //imprime 0
  7.  
  8. //pero [B]cero no es el mismo tipo que null[/B] estrictamente porque puede adquirir un valor fuera del if
  9.  
  10. //entonces por eso lo siguiente no imprimirá $a
  11.  
  12. $a=0;
  13.  
  14. if ( $a===null ) //tampoco lo imprimirá si se hace con if ( $a==="" )
  15. echo $a;
  16.  
  17.  
  18. //aquí sí imprime, porque está evaluando que es un valor entero del sistema hexadecimal o es un valor numérico
  19.  
  20. //cero para valores numéricos sí es un valor, yo puedo multiplicar 5*0=0
  21.  
  22. $a=0;
  23. if (is_numeric($a)) //o is_int($a)
  24. echo $a;
  25.  
  26. //imprime cero

el motivo de que no lo imprima es por una diferenciación que hace php de 0, false, true, null y "".

la diferenciación es funcional, porque funcionalmente cuando escribes código 0 no es lo mismo que null, tampoco son iguales "" y false.

eso era lo que quería decir. yo lo entiendo así y es lo que dice en el manual de php sobre que if manipula los tipos, el código funciona tal y como he descrito y el argumento matemático también lo he dado.