浏览我的整个$ _SESSION数组并删除空变量

时间:2011-05-07 15:32:27

标签: php

我一直在使用$ _SESSION变量进行一些测试,并且将很多设置为NULL,但仍然存在。我可以逐个删除它们,但是如何循环遍历$ _SESSION数组并快速删除NULL变量?

7 个答案:

答案 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

的0个元素
  

返回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']);