我对会话变量有一个非常奇怪的问题。 这个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);
...
有人可以帮帮我吗?
感谢
答案 0 :(得分:1)
在向$_SESSION
添加新值之前,您必须在脚本中的某处调用session_start
,否则它们将无法保留。你这样做了吗?
答案 1 :(得分:0)
我不完全确切,但尝试在引号中给出最后一个变量值。