当我这样做时,我遇到了一个小问题:
$_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")));
在这种情况下,你可以存储复杂的数据,它将是安全的&清洁的