[Pregunta]: Valor 0 es sinonimo de vacio (empty)

Iniciado por Leguim, 28 Diciembre 2019, 22:59 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Buenas tardes,

estaba programando y pasa que necesito hacer lo siguiente:

Código (php) [Seleccionar]

$valor = 0; // variable numérica
if(!empty($valor))
{
     echo "La variable no está vacía.";
}
else
{
     echo "La variable está vacía.";
}


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 (php) [Seleccionar]

$valor = 0;

if(!empty($valor) || $valor == 0)
{
    echo "La variable no está vacía.";
}
else
{
    echo "La variable está vacía";
}


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

engel lex

que tu defines como "vacio"? que es para ti una "variable vacia"? muestrame una variable que hayas declarado que contenga ningún valor
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Leguim

para mí es esto:

$var = '';

Ya lo mejore un poco más...
Código (php) [Seleccionar]

$variable = '';

if($variable === 0)
{
echo "no está vacio";
}
else
{
echo "está vacio";
}


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

engel lex

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)

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

@XSStringManolo

#4
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.

Leguim

#5
Cita de: 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)



"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
CitarEs 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!

engel lex

CitarEs 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

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

en tal caso el codigo

if($variable === ''){echo "Variable es string de largo 0"}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

@XSStringManolo

Perdón, pensé que era Jquery, solo me fijé en la condición.

Leguim

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

engel lex

#9
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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.