我正在开发一个购物车,遇到了关于独特购买的问题。
假设有一个产品"产品 A",用户购买了 4 次此商品,他们的购物车在购物篮中显示为"4"件商品,存储为:
$items = [
"Product A" => array (),
"Product A" => array(),
"Product B" => array()
];
当他们查看购物车时,我希望它显示:
Product: Quantity:
"Product A" 2
"Product B" 1
因此,问题是,是否有可能用计数进行array_unique
?那么,我可以存储所有独特的物品,还可以获得他们订购的商品数量?还是有解决这个问题的替代方法?
以下是逻辑。
1) 创建一个空白的产品购物车数组。
2)将项目添加到数组时,请检查array_key_exists()
。
3) 如果不存在,则将项目添加到数组中作为键,将数量作为值(这是数量)。
4) 如果存在,则增加数量 1。
就是这样。
您可能希望更改数组的结构:
$items = [];
function addItem($name, array $data = []){
global $items;
$items[$name][] = $data;
}
function countItem($name){
global $items;
return count($items[$name]);
}
所以$items
最终会是这样的:
$items = [
"Product A" => [
array(),
array(),
],
"Product B" => [
array()
]
];
$array[] = $element
将创建一个空数组$array
如果未定义。同样,如果尚未定义,$array["a"][] = $element
将创建一个空数组$array["a"]
。
或者,如果您只想存储计数,则必须在用 $array["a"]++
递增之前使用if(!isset($array["a"])) $array["a"] = 0;
。