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;  
  }  
}