PHP会话在多维时不持久


PHP Session not persistant when multi-dimentional

当我这样做时,我遇到了一个小问题:

$_SESSION['cartItems'] = array();

它运行良好,并且在会话中创建了一个cartItems数组。

但当我这样做时:

$_SESSION[2]['cartItems'] = array();

这一直有效,直到我刷新页面,然后它忘记了这个会话数组?

我尝试先创建2个数组:

$_SESSION[2] = array();
$_SESSION[2]['cartItems'] = array();

但仍然不能像它应该做的那样工作

我该如何解决这个问题?

数字键转换为字符串,因为$_SESSION变量是关联数组。在分配或检索值时,您可能需要尝试使用$_SESSION["2"]

此外,在我看来,你正在尝试持久化几个cart数组,所以为什么不使用这样的东西呢:

$_SESSION['carts'] = array();
$_SESSION['carts'][0] = array();
$_SESSION['carts'][1] = array();
...

甚至$_SESSION['carts'][0]['cartItems'] = array()

一些相关帖子供进一步阅读:

  • 为什么可以';我是否在PHP$_SESSION数组中使用整数作为索引
  • PHP中作为数组键的数字字符串

我建议您使用序列化对象。

$_SESSION['carts'] = serialize(array(0=> "foo", 1=> array("bar")));

在这种情况下,你可以存储复杂的数据,它将是安全的&清洁的