Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 28 Diciembre 2019, 22:59 pm



Título: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: Leguim en 28 Diciembre 2019, 22:59 pm
Buenas tardes,

estaba programando y pasa que necesito hacer lo siguiente:

Código
  1. $valor = 0; // variable numérica
  2. if(!empty($valor))
  3. {
  4.     echo "La variable no está vacía.";
  5. }
  6. else
  7. {
  8.     echo "La variable está vacía.";
  9. }
  10.  

Si prueban le va a imprimir que la variable está vacía, algo que es mentira porque tiene un dato, el 0...

Quizás funcione si hago:

Código
  1. $valor = 0;
  2.  
  3. if(!empty($valor) || $valor == 0)
  4. {
  5.    echo "La variable no está vacía.";
  6. }
  7. else
  8. {
  9.    echo "La variable está vacía";
  10. }
  11.  

¿Es recomendable? Porque esto por algo está, no creo que sea casualidad... pasa que este dato va desde el 0 para arriba... más todavía si se guarda en una base de datos... ¿habrá algún problema?... ya veo que mando el 0 y en la tabla aparece vacío, ni siquiera el 0 xD

Gracias.


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: engel lex en 28 Diciembre 2019, 23:05 pm
que tu defines como "vacio"? que es para ti una "variable vacia"? muestrame una variable que hayas declarado que contenga ningún valor


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: Leguim en 28 Diciembre 2019, 23:07 pm
para mí es esto:

$var = '';

Ya lo mejore un poco más...
Código
  1. $variable = '';
  2.  
  3. if($variable === 0)
  4. {
  5. echo "no está vacio";
  6. }
  7. else
  8. {
  9. echo "está vacio";
  10. }
  11.  

Más allá de que una $var = ''; no deja de ser una cadena, igualmente no tiene nada y esta vacía para mi..


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: engel lex en 28 Diciembre 2019, 23:11 pm
es php si contiene XD

contiene informacion... es un string de largo 0...

el asunto es la definición misma de vacio...

lee la documentacion (haz click en "empty" en tu codigo arriba para que te mande a la pagina de la documentacion)



Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: @XSStringManolo en 28 Diciembre 2019, 23:14 pm
Es algo así:

if (variable === null)
alert ("Variable Vacia");

if (variable === 0)
alert ("Variable contiene valor cero");

if (variable === undefined)
alert ("variable está sin definir");

try
{
if (variable);
}
catch(error)
alert("Variable no se declaró");

Para tipos referenciados necesitas utilizar la keyword instanceof

Esto todo funciona así porque == transforma los tipos de datos al compararlos. === no hace casteo implícito.
Para que la función try catch funcione debes usar el modo estricto.
Pon la siguiente línea del código como primera sentencia dentro de las etiquetas script.
"use strict";

Si quieres una explicación extendida, viene todo explicado y detallado en el libro THE PRINCIPLES OF OBJECT-ORIENTED javascript.  Author Nicholas C. Zakas.  Publicado por No Starch Press.

Para conocimientos imprescindibles sobre el lenguaje es obligado ELOQUENT javascript Third Edition A Modern Introduction To Programming  Author Marjin Haverbeke. Publicado por No Starch Press.

Por los título ya sabes que están en inglés.


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: Leguim en 28 Diciembre 2019, 23:17 pm
es php si contiene XD

contiene informacion... es un string de largo 0...

el asunto es la definición misma de vacio...

lee la documentacion (haz click en "empty" en tu codigo arriba para que te mande a la pagina de la documentacion)



"Determina si una variable es considerada vacía. Una variable se considera vacía si no existe o si su valor es igual a FALSE. empty() no genera una advertencia si la variable no existe."

Bueno si jaja, tenes razón...
¿En la manera que estoy tratando de que permita el 0 pero como un numero, no como un False... que yo se que son iguales (==) pero no identicos (===) estaría bien con el ultimo código que pase no? xD


EDIT
Citar
Es algo así:

if (variable === null)
alert ("Variable Vacia");

if (variable === 0)
alert ("Variable contiene valor cero");

if (variable === undefined)
alert ("variable está sin definir");

try
{
if (variable);
}
catch(error)
alert("Variable no se declaró");

Justamente eso!


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: engel lex en 28 Diciembre 2019, 23:21 pm
Citar
Es algo así:

if (variable === null)
alert ("Variable Vacia");

if (variable === 0)
alert ("Variable contiene valor cero");

if (variable === undefined)
alert ("variable está sin definir");

try
{
if (variable);
}
catch(error)
alert("Variable no se declaró");

eso dará error en php

Citar
estaría bien con el ultimo código que pase no? xD

en tal caso el codigo

Código:
if($variable === ''){echo "Variable es string de largo 0"}


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: @XSStringManolo en 28 Diciembre 2019, 23:28 pm
Perdón, pensé que era Jquery, solo me fijé en la condición.


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: Leguim en 29 Diciembre 2019, 00:03 am
Aprovechando...

si yo hago 3 >== 2 es un operador de comparación válido? porque no encontré en el manual de php algo sobre esto... o <==


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: engel lex en 29 Diciembre 2019, 00:10 am
eso es un comparador matematico... no tiene dicha version hasta donde tengo conocimiento ya que no se supone que requiera comparar tipo... un principio de programacion de python que creo que se puede extender a cualquier lenguaje es "eres programador, sabes lo que estás haciendo" así que muchos lenguajes no tienen verificaciones del tipo "para evitar que un valor desconocido por mi pase por aquí y sea comparado", es decir, hay acotaciones


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: @XSStringManolo en 29 Diciembre 2019, 00:57 am
Yo creo que si que puede ser válido. 1 < === x Seria evaluar expresión: uno es menor o === a X.

Como la sentencia se evalua de derecha a izquierda haría:
=== x (no casteo)
< x
1 < x

El operador < por lo que creo no hace casteo, ya que si comparas a un string no lo castea, si no que busca su valor en la tabla ascii. Entonces si bien el operador <=== no existe, si existe < y juntar operadores no da errores.

ODio que los lenguajes trabajen con los tipos en vez de obligar al programador a hacerlo a mano. Se evitarían bugs a saco.


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: engel lex en 29 Diciembre 2019, 01:42 am
ODio que los lenguajes trabajen con los tipos en vez de obligar al programador a hacerlo a mano. Se evitarían bugs a saco.

no si el programador sabe lo que hace... usualmente son mas errores del programador que del lenguaje, especialmente en lenguajes maduros como js o php

Citar
Yo creo que si que puede ser válido. 1 < === x Seria evaluar expresión: uno es menor o === a X.

creo que es un poco fuera de lugar porque usualmente usarás esto como un operador de comparacion matematica, ergo no deberías tener que comprobar el tipo porque deberías de antemano saber que el tipo es matematicamente operable (int, float, char, etc)


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: @XSStringManolo en 29 Diciembre 2019, 02:38 am
Da error de sintaxis el <=== qué raro.


Título: Re: [Pregunta]: Valor 0 es sinonimo de vacio (empty)
Publicado por: Leguim en 29 Diciembre 2019, 02:40 am
Claro, porque se ve que no existe la expresión <=== o >=== solamente === o !==