session_destroy - PHP: ¿cuál es una alternativa a empty(), donde la cadena "0" no se trata como vacía?
session id() php (7)
Posible duplicado:
Arreglando la función vacía de PHP
En PHP, empty () es un gran atajo porque le permite verificar si una variable está definida Y no está vacía al mismo tiempo.
¿Qué usaría cuando no quiere que el "0" (como una cadena) se considere vacío, pero todavía quiere que falso, nulo, 0 y "" se trate como vacío?
Es decir, me pregunto si tiene su propio atajo para esto:
if (isset($myvariable) && $myvariable != "") ;// do something
if (isset($othervar ) && $othervar != "") ;// do something
if (isset($anothervar) && $anothervar != "") ;// do something
// and so on, and so on
No creo que pueda definir una función auxiliar para esto, ya que la variable podría estar indefinida (y, por lo tanto, no podría pasarse como parámetro).
Esto debería hacer lo que quieras:
function notempty($var) {
return ($var==="0"||$var);
}
Edición: supongo que las tablas solo funcionan en la vista previa, no en los envíos de respuestas reales. Por favor, consulte las tablas de comparación de tipos de PHP para obtener más información.
notempty("") : false notempty(null) : false notempty(undefined): false notempty(array()) : false notempty(false) : false notempty(true) : true notempty(1) : true notempty(0) : false notempty(-1) : true notempty("1") : true notempty("0") : true notempty("php") : true
Básicamente, notempty () es lo mismo que! Empty () para todos los valores excepto para "0", para el que devuelve true .
Editar: Si está utilizando error_reporting (E_ALL) , no podrá pasar una variable indefinida a funciones personalizadas por valor. Y como señala mercator, siempre debe usar E_ALL para cumplir con las mejores prácticas. Este enlace (comentario # 11) que proporciona explica por qué no debe usar ninguna forma de supresión de errores por razones de rendimiento y mantenimiento / depuración.Consulte la respuesta de orlandu63 para ver cómo se pasan los argumentos a una función personalizada por referencia .
La respuesta a esto es que no es posible acortar lo que ya tengo.
Suprimir avisos o advertencias no es algo que deba hacer, por lo que siempre tendré que verificar si está vacío () o isset () antes de verificar el valor, y no puede verificar si algo está vacío () o isset () dentro de una función.
Si ($ var! = Nulo)
if ((isset($var) && $var === "0") || !empty($var)) { }
De esta manera, ingresará en la construcción if si la variable está establecida AND es "0", O la variable está configurada AND not = null ("0", null, false)
function Void($var)
{
if (empty($var) === true)
{
if (($var === 0) || ($var === ''0''))
{
return false;
}
return true;
}
return false;
}
function isempty(&$var) {
return empty($var) || $var === ''0'';
}
La clave es el operador &
, que pasa la variable por reference y la crea, si no existe.
if(isset($var) && ($var === ''0'' || !empty($var)))
{
}