Php 从购物车项目数组中删除重复项并添加数量
我有一个包含产品项目的数组,在某些情况下,产品会被添加到购物车中两次,我希望删除重复项并将数量添加到一起 项目需要通过Php 从购物车项目数组中删除重复项并添加数量,php,arrays,Php,Arrays,我有一个包含产品项目的数组,在某些情况下,产品会被添加到购物车中两次,我希望删除重复项并将数量添加到一起 项目需要通过id 我能解决这个问题的最好办法是什么 一个示例阵列是: Array ( [0] => Array ( [type] => fabrication [id] => 886 [price] => 11.00
id
我能解决这个问题的最好办法是什么
一个示例阵列是:
Array
(
[0] => Array
(
[type] => fabrication
[id] => 886
[price] => 11.00
[quantity] => 1
[producttitle] => Edge Profiles - Edge Profile B - Single 5mm Radius
[index] => 2
)
[1] => Array
(
[type] => fabrication
[id] => 887
[price] => 11.00
[quantity] => 1
[producttitle] => Edge Profiles - Edge Profile C - Single 19mm Radius
[index] => 3
)
[2] => Array
(
[type] => fabrication
[id] => 887
[price] => 11.00
[quantity] => 10
[producttitle] => Edge Profiles - Edge Profile C - Single 19mm Radius
[index] => 4
)
)
这应成为:
Array
(
[0] => Array
(
[type] => fabrication
[id] => 886
[price] => 11.00
[quantity] => 1
[producttitle] => Edge Profiles - Edge Profile B - Single 5mm Radius
[index] => 2
)
[1] => Array
(
[type] => fabrication
[id] => 887
[price] => 11.00
[quantity] => 11
[producttitle] => Edge Profiles - Edge Profile C - Single 19mm Radius
[index] => 3
)
)
类似这样(未经测试):
注意,您的新数组将按项ID进行索引,这实际上会对您有很大帮助。一开始就这样做,检查现有购物车项目要容易得多,而不是一开始就允许重复
如果您确实不喜欢按ID索引$cleanArray
,您可以在重复清理后将其删除:
$cleanArray = array_values($cleanArray);
创建新数组以检查并合并结果: $check=array() 然后在现有数组上循环,并使用id作为检查数组的数组键
foreach(array as $whatever){
if(isset($check[$whatever['id']])){
$check[$whatever['id']]['quantity'] += $whatever['quantity'];
} else {
$check[$whatever['id']] = $whatever;
}
}
现在,您应该有一个数组$check,用组合结果替换原始数组
哦,看来jszobody打败了我:)我下面的答案有用吗?有用。非常感谢,巴德。
foreach(array as $whatever){
if(isset($check[$whatever['id']])){
$check[$whatever['id']]['quantity'] += $whatever['quantity'];
} else {
$check[$whatever['id']] = $whatever;
}
}