El código explicará más:
$var = 0;
if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}
El resultado devuelve "Está vacío". Pensé que empty () verificará si ya configuré la variable y tengo valor dentro. ¿Por qué devuelve "Está vacío"?
empty
es quizás la función PHP más útil pero ampliamente incomprendida. Aprenda cómo y cuándo usarlo.empty
es esencialmente la abreviatura deisset($var) && $var != false
. Debes estar sosteniendo tuempty
muy raro para dispararte en el pie con esto. ; Pfalse
Es inútil comparar libremente una variable sin activar un error de "variable indefinida"? Bueno, supongo que nunca haces esto ... 3) Elegir la función incorrecta en un contexto de seguridad no significa que la función en sí es mala, inútil o inconsistente; solo significa que alguien eligió la función incorrecta para el trabajo.empty()
, entonces probablemente tenga un nombre incorrecto.Respuestas:
http://php.net/empty
Tenga en cuenta que esta es exactamente la misma lista que para una coerción a Boolean
false
.empty
es simplemente!isset($var) || !$var
. Intenta en suisset
lugar.fuente
!empty($var)
, pero tenga en cuenta que eso no es lo mismo que escribió en la pregunta. Qué usar depende completamente de los valores que desea considerartrue
. Simplemente compare las diferencias entreisset
yempty
y elija la combinación correcta para la situación correcta.isset
devuelveTrue
if$var=0
. Pero lo que quieres decir conif(isset($var) && $var != 0)
es lo mismo queempty
'0'
se trata como equivalente a0
. Esa es una filosofía de diseño central de PHP. Estoy de acuerdo en que esta es una opción extremadamente discutible, sin embargo, no estoy aquí para debatir esa opción con usted. Dentro de la lógica de PHP,empty
como equivalente a== false
menos avisos está bien IMO. Que algunas cosas deberían ser muy diferentes en PHP de lo que son es un tema diferente.Me preguntaba por qué nadie sugirió la extremadamente útil tabla de comparación de tipos . Responde a todas las preguntas sobre las funciones comunes y compara operadores.
Un fragmento:
Junto con otras hojas de trucos, siempre guardo una copia impresa de esta tabla en mi escritorio en caso de que no esté seguro
fuente
En el caso de valores numéricos, debe usar la función is_numeric:
fuente
Usar en su
strlen()
lugar. Me encontré con el mismo problema usando 1/0 como valores posibles para algunas variables. Estoy usandoif (strlen($_POST['myValue']) == 0)
para probar si hay un carácter o no en mi variable.fuente
@strlen
? Mientras pase una variable, no debería generar un error. Si su strlen es vaciar el sistema registra el valor como 0.Recientemente me atraparon con los pantalones bajados en este también. El problema que a menudo tratamos son las variables no definidas: digamos un elemento de formulario que puede o no haber estado allí, pero para muchos elementos,
0
(o la cadena'0'
que vendría a través de la publicación con mayor precisión, pero aún se evaluaría como "falsey" ) es un valor legítimo, por ejemplo, en una lista desplegable.usar
empty()
primero y luegostrlen()
es lo mejor si necesita esto también, como:fuente
Desde un punto de vista lingüístico, el vacío tiene un significado sin valor . Como dijeron los demás, tendrá que usar
isset()
para verificar si se ha definido una variable, que es lo que hace.fuente
0
versusnull
con facilidad. ¡Gracias!empty()
devuelve verdadero para todo lo que se evalúaFALSE
, en realidad es un 'no' (!
) disfrazado. Creo que quisiste decirisset()
fuente
Para aceptar 0 como valor en uso variable
isset
Comprobar si la variable está vacía
Compruebe si la variable está configurada
fuente
¡Me está funcionando!
fuente
Las siguientes cosas se consideran vacías:
Del manual de PHP
En su caso
$var
es0
, porempty($var)
lo que volverátrue
, está negando el resultado antes de probarlo, por lo que el bloque else se ejecutará dando "Its empty
" como salida.fuente
Del manual: Devuelve FALSE si var tiene un valor no vacío y no cero.
Las siguientes cosas se consideran vacías:
Más: http://php.net/manual/en/function.empty.php
fuente
En mi caso este código funcionó.
fuente
En realidad, solo verifique si la variable se establece o no. En este caso, si desea verificar si su variable es realmente cero o está vacía, puede usar este ejemplo:
solo por aviso $ myVar == 0 actúa como una función vacía.
fuente
vacío debería significar vacío ... digan lo que digan.
Cuando lo hago
Espero que
var_dump(empty($var));
vuelva falso.Si está comprobando cosas en una matriz, siempre tiene que hacer
isset($var)
primero.fuente
usar solo en
($_POST['input_field_name'])!=0
lugar de!($_POST['input_field_name'])==0
entonces 0 no se trata como vacío.fuente
No estoy seguro si todavía hay personas que buscan una explicación y una solución. Los comentarios anteriores lo dicen todo sobre las diferencias entre VERDADERO / FALSO / 1 / 0.
Me gustaría traer mis 2 centavos para mostrar el valor real.
Booleano
Si está trabajando con un tipo de datos booleano, está buscando un resultado VERDADERO vs. FALSO; si lo almacena en MySQL, se almacenará como 1 resp. 0 (si no me equivoco, esto es lo mismo en la memoria de su servidor).
Por lo tanto, para mostrar el valor en PHP, debe verificar si es verdadero (1) o falso (0) y mostrar lo que desee: "VERDADERO" o "FALSO" o posiblemente "1" o "0".
Atención, todo lo más grande (o diferente) que 0 también se considerará VERDADERO en PHP. Por ejemplo: 2, "abc", etc. devolverán VERDADERO.
BIT, TINYINT
Si está trabajando con un tipo de datos numérico, la forma en que se almacena es la misma.
Para mostrar el valor, debe decirle a PHP que lo maneje como un número. La forma más fácil que encontré es multiplicarlo por 1.
fuente
ejemplo apropiado simplemente cree un campo de tipo int (ejemplo, número de teléfono móvil) en la base de datos y envíe un valor en blanco para la siguiente base de datos a través de un formulario o simplemente inserte usando SQL. lo que se guardará en la base de datos 0 porque es de tipo int y no se puede guardar como en blanco o nulo. por lo tanto, está vacío, pero se guardará como 0. así que cuando obtenga datos a través de PHP y verifique los valores vacíos. Es muy útil y lógicamente correcto.
0.00, 0.000, 0.0000 .... 0.0 ... 0 también está vacío y el ejemplo anterior también se puede usar para almacenar diferentes tipos de valores en la base de datos como flotante, doble, decimal (los decimales tienen diferentes variantes como 0.000, etc.).
fuente
Debe usar isset () para verificar si el valor está configurado.
fuente