我正试图用以下代码创建一个"添加到购物车"功能:
if (empty($_SESSION['cart'])) {
$_SESSION['cart'] = array(
"id" => $_GET['id'],
"size" => $_POST['size'],
"count" => $_POST['count']
);
} else {
array_push($_SESSION['cart'], array(
"id" => $_GET['id'],
"size" => $_POST['size'],
"count" => $_POST['count']
));
}
这是print_r($_SESSION)
:的输出
Array
(
[cart] => Array
(
[id] => 1
[size] => XS
[count] => 1
[0] => Array
(
[id] => 2
[size] => XS
[count] => 1
)
)
)
你可以在数组中看到我的推送方法有什么问题。如果你知道我的意思,我希望新推送的内容与上面的第一个条目处于相同的"级别"?
我不确定你所说的"新推送的内容与上面的第一个条目"级别"相同"是什么意思,下面的场景是不可能的:
$c = array(
'id' => 1,
'size' => 'X5',
'count' => 1,
// YOU CAN'T HAVE DUPLICATE KEYS IN YOUR ARRAY
'id' => 2
);
因此,也许您应该在这两种条件下都执行array_push(对于当前的示例),这样您就会得到以下结构:
$c = array(
0 => array(
'id' => 1,
'size' => 'X5',
'count' => 1,
),
1 => array(
'id'=>2,
'size'=>'X3',
...
);
这样做可以设置您的购物车:
$_SESSION['cart'][] = array("id" => $_GET['id'],"size" => $_POST['size'],"count" => $_POST['count']);
然后,每个购物车项目都将是$_SESSION['cart']
的子数组