我一直在使用$ _SESSION变量进行一些测试,并且将很多设置为NULL,但仍然存在。我可以逐个删除它们,但是如何循环遍历$ _SESSION数组并快速删除NULL变量?
答案 0 :(得分:3)
您可以将array_filter
与使用is_null
的回调函数一起使用:
$output = array_filter($input, function($val) { return !is_null($val); });
答案 1 :(得分:3)
$_SESSION = array_filter($_SESSION, 'count');
将删除所有NULL
值(因为count()
返回0
的{{1}})以及任何可数的(数组或对象)来自PHP manual:
返回var中元素的数量, 这通常是一个数组,因为 其他任何东西都有一个元素。
如果var不是数组或对象 使用实现的Countable接口, 1将被退回。 有一个 异常,如果var为NULL,则为0 返回。强>
由于NULL
在布尔上下文中求值为false,因此无需实现任何自定义函数。
答案 2 :(得分:1)
$_SESSION = array_filter($_SESSION);
这将从会话数组中删除任何“虚假”值,包括null
。
答案 3 :(得分:1)
这将删除NULL
值,但不会删除其他空值或FALSE
。如果您还想要删除FALSE
vals和空字符串等,则可以轻松修改
foreach ($_SESSION as $key=>$var)
{
if ($var === NULL) unset($_SESSION[$key]);
}
答案 4 :(得分:1)
应该这样做:
foreach ($_SESSION as $key => $value)
{
if ($value === NULL)
unset($_SESSION[$key];
}
P.S。 array_filter将删除任何等于“false”的内容。您应该提供自己的回调函数,或者如果您只需要删除NULL值并保留空字符串或零,则使用此示例。
答案 5 :(得分:0)
foreach($_SESSION as $key => $value){
if(empty($value) || is_null($value)){
unset($_SESSION[$key]);
}
}
答案 6 :(得分:0)
如果您通过将值设置为NULL来“删除”$_SESSION
元素,那么您做错了。要取消设置数组元素,您应该使用
unset
在$_SESSION
元素上。
# Wrong
$_SESSION['foo'] = NULL;
#Good
unset($_SESSION['foo']);