我想制作一个简单的购物车,它带有$ _GET变量并将其放入$ _SESSION变量中。我试过的代码是:
<?php
session_start();
if (is_numeric($_GET['add'])) $_SESSION[(string)$_GET['add']] = 1; ?>
因为我的项ID是数字,所以我先检查是否要将随机内容添加到会话变量中。然后我做一个var_dump来查看结果。我第一次用?add = 102运行代码时得到:
array(1) { [102]=> int(1) }
然后我再次使用?add = 108运行脚本:
array(1) { [108]=> int(1) }
我想要的是:
array(2) { ["102"]=> int(1), ["108"]=> int(1) }
我做错了什么?我的概念是将$ _GET变量转换为字符串,并将$ 1和$ _GET的字符串值以关联方式存储在$ _SESSION中。这应该允许我添加尽可能多的项目,只要他们的ID不一样,这就是我想要的。
以下是我尝试过的替代方案:
strval($_GET['add']),
(string)($_GET['add']),
$_GET['add']
似乎没什么用。
任何帮助都将不胜感激。
答案 0 :(得分:3)
您不能使用数字的$_SESSION
个键。
在会话中创建另一个数组,例如$_SESSION['items']
然后:
session_start();
if(is_numeric($_GET['add']))
{
$_SESSION['items'][(string)$_GET['add']] = 1;
}
稍后,当您在会话中有其他信息时,迭代这个项目数组要容易得多。
答案 1 :(得分:0)
我意识到这是Satya的评论和mthie答案的合并,但我认为应该是完整的答案
add to
数组,而不是overwrite
所以试试
<?php
session_start();
if(is_numeric($_GET['add'])) {
$_SESSION['add'][][(string)$_GET['add']] = 1;
}
?>