Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

206
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!