Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

207
Vistas
Por qué vacío ('0') = verdadero; vacío('00') = falso;

Evalúo $var usando

 if(empty($_GET['var'])){ ... }

Tomo VERDADERO de

 https://myweb.com/?var=0

tomo FALSO de

 https://myweb.com/?var=00
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La 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:

  • Lanzar un error en cualquier conversión que no sea 100% inequívoca.
  • Elija un conjunto de compromisos que sean útiles en su mayoría, pero no del todo consistentes.

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í .

over 4 years ago · Santiago Trujillo Denunciar

0

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 ===

over 4 years ago · Santiago Trujillo Denunciar

0

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 '; ?>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda