Evalúo $var usando
if(empty($_GET['var'])){ ... }Tomo VERDADERO de
https://myweb.com/?var=0tomo FALSO de
https://myweb.com/?var=00La pseudofunción empty comparte su lógica con la conversión a booleano : si algo es equivalente a "falso", se considera "vacío".
La lista de valores que se consideran "vacíos" pretende ser útil, pero en ocasiones es confusa, porque en realidad no hay una respuesta perfecta. Comenzando con números enteros, parece razonable que 0 esté "vacío", pero, por ejemplo, 1 no lo está. Debido a que la entrada del usuario casi siempre viene en forma de cadenas (particularmente en la web, donde PHP se siente más cómodo), también es útil que la cadena "0" se comporte igual que el número entero 0 .
A primera vista, "00" también debería ser equivalente a 0 y, por lo tanto, "vacío", pero ahora las cosas comienzan a complicarse: si convierte la cadena "hello" en un número entero, también es 0 , también lo es "hello" también vacío? Eso no sería muy útil.
La verdad es que los moldes como este solo pueden funcionar de dos maneras:
PHP eligió la segunda ruta, y la diferencia entre empty("0") y empty("00") es uno de los efectos secundarios del compromiso particular elegido. Otros lenguajes que tomaron una ruta similar (por ejemplo, Perl, JavaScript) tienen compromisos diferentes, con diferentes resultados sorprendentes.
Vea también mi respuesta a una pregunta similar aquí .
Porque 0 da vacío en PHP si marca sin tipo, pero creo que 00 escribe a un valor de cadena y, por lo tanto, no está vacío.
Puede verificar estrictamente con el tipo a través del operador ===
Creo que probablemente se deba a que está recibiendo el 00 como valor de cadena en su código. Porque 0 y 00 se consideran vacíos por la función de empty en PHP . Intente ejecutar el código a continuación en uno de sus PHP para comprenderlo mejor. Incluso puede consultar el enlace de sandbox .
<?php $a = 0; $b = 00; $c = '00'; if(empty($a)) echo 'empty a'; if(empty($b)) echo 'empty b'; if(empty($c)) echo 'empty c'; ?> Consulte la documentación de la función empty() , hay una lista de valores que se consideran vacíos.
La función
empty()comprueba si una variable está vacía o no. Esta función devuelve falso si la variable existe y no está vacía, de lo contrario devuelve verdadero. Los siguientes valores se evalúan como vacíos:0
0.0
"0"
""
NULO
FALSO
formación()
Además, cuando se trata de verificación numérica, siempre debe encasillar el valor en un número entero y luego comparar si es 0 o no. Este sería el enfoque ideal.
<?php $a = 0; $b = '0'; $c = '00'; $d = 1; $e = '1'; if(!intval($a)) echo 'empty a '; if(!intval($b)) echo 'empty b '; if(!intval($c)) echo 'empty c '; if(!intval($d)) echo 'empty d '; if(!intval($e)) echo 'empty e '; ?>