如果我将一个项目添加到购物车并为其选择颜色,那么这样可以正常工作。但是,如果我再次添加相同的项目但选择不同的颜色,则会覆盖初始颜色。数量是正确的(2),但我想显示两种颜色。
$product_id = $_POST['id'];
$colour = $_POST['colour'];
$wasFound = false;
$i = 0;
if(!isset($_SESSION['cart_array']) || count($_SESSION['cart_array']) < 1) {
$_SESSION['cart_array'] = array(0 => array("item_id" => $product_id, "quantity" => 1, "colour" => $colour));
} else {
foreach ($_SESSION['cart_array'] as $each_item) {
$i++;
while (list($key, $value) = each($each_item)) {
if($key == "item_id" && $value == $product_id) {
array_splice($_SESSION['cart_array'], $i-1, 1, array(array("item_id" => $product_id, "quantity" => $each_item['quantity'] + 1, "colour" => $colour)));
$wasFound = true;
}
}
}
if($wasFound == false) {
array_push($_SESSION['cart_array'], array("item_id" => $product_id, "quantity" => 1, "colour" => $colour));
}
}
答案 0 :(得分:0)
您必须将Session cart中的颜色变量转换为数组以存储多种颜色变体
这样的事情:
$product_id = $_POST['id'];
$colour = $_POST['colour'];
$wasFound = false;
$i = 0;
if(!isset($_SESSION['cart_array']) || count($_SESSION['cart_array']) < 1) {
$_SESSION['cart_array'] = array(0 => array("item_id" => $product_id, "quantity" => 1, "colour" => $colour));
} else {
foreach ($_SESSION['cart_array'] as $each_item) {
$i++;
while (list($key, $value) = each($each_item)) {
if($key == "item_id" && $value == $product_id) {
array_splice($_SESSION['cart_array'], $i-1, 1, array(array("item_id" => $product_id, "quantity" => $each_item['quantity'] + 1, "colour" => [$each_item['colour'],$colour])));
$wasFound = true;
}
}
}
if($wasFound == false) {
array_push($_SESSION['cart_array'], array("item_id" => $product_id, "quantity" => 1, "colour" => $colour));
}
}
答案 1 :(得分:0)
我建议您将阵列改为:
array([item_d] => array('item_id' => [item_d],
'count' => [Total_count],
'colors'=> array('red' => [red_count],
'blue' => [blue_count]
)
);
);
和
if(!isset($_SESSION['cart_array'])) {
$_SESSION['cart_array'] = array();
}
if(!isset($_SESSION['cart_array'][$product_id])) {
$_SESSION['cart_array'][$product_id] = array("item_id" => $product_id, 'count' => 0, 'colors' =>array());
}
if(!isset($_SESSION['cart_array'][$product_id]['colors'][$color])) {
$_SESSION['cart_array'][$product_id]['colors'][$color] = 1;//1 of color
} else {
$_SESSION['cart_array'][$product_id]['colors'][$color]++;
}
$_SESSION['cart_array'][$product_id]['count']++;//global count