无法向$ _SESSION添加新值

时间:2011-03-10 10:30:29

标签: php session associative-array

我对会话变量有一个非常奇怪的问题。 这个var是一个关联数组。我在页面(页面A)中创建了这个,其中包含大量可过滤的项目。我在会话var

中保存过滤器
$_SESSION['filter'] = Array ( 'm' => 'acrylic', 'a' => 'P', 'c' => 1960 );

用户可以转到详细页面(第B页),但我在这里

$_SESSION['filter'] = Array ( 'm' => 'acrylic', 'a' => 'P');

奇怪的是,当我进入详细页面时,我会错过关联数组中的最后一项 所以我无法使用正确的过滤器信息返回。

我在此函数中构建会话var,选项在URL示例中传递:http://www.web.com/artworks/a-P/c-1960/o-private+collection

带有此URL的$ args参数将是此数组('a-P','c-1960','o-private + collection')

private function filter($args){
        // options
        $f = array('a','c','u','t','m','o');
    $a = array();

    foreach($args as $i){
        $t = explode('-', $i);
        if (in_array($t[0], $f)){
            $a[$t[0]] = urldecode($t[1]);
            $this->suffix .= '/'.$i;
        }
        else if(is_numeric($i))
            $a['pp'] = intval($i);
    }
    $_SESSION['filter'] = $a;

    return $a;
}

我在第A页中调用它,在页面B中,我不调用此函数,唯一的交互是

if (isset($_SESSION['filter'])){
print_r($_SESSION);
...
有人可以帮帮我吗? 感谢

2 个答案:

答案 0 :(得分:1)

在向$_SESSION添加新值之前,您必须在脚本中的某处调用session_start,否则它们将无法保留。你这样做了吗?

答案 1 :(得分:0)

我不完全确切,但尝试在引号中给出最后一个变量值。