我想使用数组构建一个简单的购物车。我需要在购物车中显示每个独特的商品以及每个商品的数量。
我的初始购物车数组可能如下所示:
$cart=
array(
array(2003,100,"Table")
,array(2003,100,"Table")
,array(2003,100,"Table")
,array(2004,200,"Chair")
,array(2004,200,"Chair")
);
每个数组中的第一个值是product_id,然后是价格&然后是产品名称。
如何打印每个独特项目以及每个项目的数量?
提前致谢。
答案 0 :(得分:2)
$new_cart = array();
foreach($cart as $product) {
if(!isset($new_cart[$product[0]])) {
$new_cart[$product[0]] = array('quantity' => 1, 'label' => $product[2], 'price' => $product[1]);
}
else {
$new_cart[$product[0]]['quantity']++;
}
}
我强烈建议使用关联数组。您的问题是存储值的方式。尝试使用这样的东西:
$cart_items = array(
2004 => array('quantity' => 3, 'label' => 'Leather Chair', 'price' => 200),
2901 => array('quantity' => 1, 'label' => 'Office Desk', 'price' => 1200),
);
当用户更新数量或添加现有产品时,只需增加数量。
答案 1 :(得分:1)
您可以简单地迭代数组并使用产品ID作为键来计算金额:
$amounts = array();
foreach ($cart as $item) {
if (!isset($amounts[$item[0]])) $amounts[$item[0]] = 0;
$amounts[$item[0]]++;
}
但如果您的购物车只存储产品ID和金额会更容易,所以:
array(
2003 => 3,
2004 => 2
)
这实际上是上面的算法正在做的事情。但有了这个,您就拥有了所需的所有信息(产品ID和数量)。