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$a=0;
if( $a == "" )
echo $a;
//imprime 0
//pero [B]cero no es el mismo tipo que null[/B] estrictamente porque puede adquirir un valor fuera del if
//entonces por eso lo siguiente no imprimirá $a
$a=0;
if ( $a===null ) //tampoco lo imprimirá si se hace con if ( $a==="" )
echo $a;
//aquí sí imprime, porque está evaluando que es un valor entero del sistema hexadecimal o es un valor numérico
//cero para valores numéricos sí es un valor, yo puedo multiplicar 5*0=0
$a=0;
echo $a;
//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.