我有一个购物车系统,每个可用项目都有多个选项。当客户将商品添加到购物车时,它会将所选选项保存到该特定ID,并将其显示在购物车中。
我这样做的代码如下:
$optionsSelected = array();
if(!empty($_POST['productOption'])){
foreach($_POST['productOption'] as $options){
$optionsSelected[] = $options;
}
}
case "add":
$ optionsSelected数组var_dumps()as:
array(3) { [0]=> string(21) "Swedish Fish Assorted" [1]=> string(31) "Beary Blue Rasberry Gummi Bears" [2]=> string(25) "Nonpareils Milk Chocolate" }
$_SESSION['cart'][$productID]++;
$_SESSION['options'.$productID] = $optionsSelected;
header('location: /shop/cart');
break;
要显示我购物车中的选项:
<?php if($_SESSION['options'.$id] > 0): ?>
<?php foreach($_SESSION['options'.$id] as $option): ?>
<p><?php echo $option; ?></p>
<?php endforeach; ?>
<?php endif; ?>
现在唯一的问题是:
客户将Product ID 4521
选项A,C,and D
添加到购物车,它显示效果很好,工作得很好。
现在,客户将带有选项Product ID 4521
的{{1}}添加到购物车,它会在购物车中显示数量为2的相同产品,现在选项会显示D, B, and A
并且第一组选项消失了。
我需要它实际上将它们分成不同的行,每个行的数量为D, B, and A
。
1
我真的不确定如何告诉它打破这些并将它们作为Product Description Options Quantity
Product ID 4521 A, C, D 1
Product ID 4521 D, B, A 1
放在购物车中,因为它们具有相同的产品ID。
答案 0 :(得分:0)
如果您稍微更改一下代码,则可以使用以下内容:
$array = array();
$array['options4521'][] = array('A','C','D');
$array['options4521'][] = array('B','B','A');
echo print_r($array);
输出是:
[options4521] => Array
(
[0] => Array
(
[0] => A
[1] => C
[2] => D
)
[1] => Array
(
[0] => B
[1] => B
[2] => A
)
)
答案 1 :(得分:0)
在阵列中添加产品时,用新的产品擦除旧产品。
您可以使用替代方案,例如每个产品的子阵列
$optionsSelected = array();
if (!empty($_POST['productOption']))
{
foreach ($_POST['productOption'] as $options)
$optionsSelected[] = $options;
}
case "add":
$_SESSION['cart'][$productID]++;
$_SESSION['options'.$productID][] = $optionsSelected; // line changed here
header('location: /shop/cart');
break;
然后,您可以这样显示结果
<?php if (count($_SESSION['options'.$id]) > 0): ?>
<?php foreach($_SESSION['options'.$id] as $key => $options): ?>
<?php echo '<p>Product ID '.$id.': '.implode(", ", $options).' (Quantity: '.$_SESSION['cart'][$id].')</p>'; ?>
<?php endforeach; ?>
<?php endif; ?>
注意:显示部分可能(应该)看起来像这样
<?php
if (count($_SESSION['options'.$id]) > 0)
{
foreach ($_SESSION['options'.$id] as $key => $options)
{
echo '<p>Product ID '.$id.': '.implode(", ", $options).' (Quantity: '.$_SESSION['cart'][$id].')</p>';
}
}
?>