我想使用$_SESSION
将商品存储在购物车中。这些项目由id
定义,每个项目有3个大小,每个大小都有存储项目的数量。我想像那样使用多维关联数组
$_SESSION['cart']['id'.$_GET['id']]['size'.$_POST['size']]['quantity'] += $_POST['quantity'];
但我想我得到的问题(Notice: Undefined index
)是因为没有先定义数组。
我想保持简单,那么最简单的方法是什么?
答案 0 :(得分:3)
您的问题是您只是假设项目已在$_SESSION
中设置。您需要假设它们不是,并从添加它们开始。
你可以利用isset()
。
if(!isset($_SESSION['cart']['id'.$_GET['id']])) {
$_SESSION['cart']['id'.$_GET['id']] = array(
'sizeONE' => array(
'quantity' => 0
),
'sizeTWO' => array(
'quantity' => 0
),
'sizeTHREE' => array(
'quantity' => 0
),
);
}
您显然修改了上述内容,可能只根据需要设置了产品ID,然后运行相同类型的isset()
来添加所选尺寸。我只是向您展示如何创建初始结构数组。
答案 1 :(得分:1)
我认为存储这些数据的最佳方式不是在多维数组中,而是在一个Object中(而不是在$ _SESSION中,但这是一个完全不同的主题)。 / p>
如果你想用一个物体接近它,我会使用以下变体:
$myItem = new stdClass;
$myItem->id = $_GET['id'];
$myItem->sizeOne = new stdClass;
$myItem->sizeOne->name = "sizeOne";
$myItem->sizeOne->quantity = 1;
// repeat for sizeTwo and sizeThree
$_SESSION['cart'][$myItem->id] = $myItem;
<强>优点:强>
您的计划中有更多OOP approach。
<强>缺点:强>
在$ _SESSION中存储对象可能会导致scalability issues。