Buenas tardes,
estaba programando y pasa que necesito hacer lo siguiente:
$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:
$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.
que tu defines como "vacio"? que es para ti una "variable vacia"? muestrame una variable que hayas declarado que contenga ningún valor
para mí es esto:
$var = '';
Ya lo mejore un poco más...
$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..
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)
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.
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!
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"}
Perdón, pensé que era Jquery, solo me fijé en la condición.
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 <==
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
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.
Cita de: @?0!,5^34 en 29 Diciembre 2019, 00:57 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
CitarYo 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)
Da error de sintaxis el <=== qué raro.
Claro, porque se ve que no existe la expresión <=== o >=== solamente === o !==