PHP如何在键值重复的情况下合并数组元素

时间:2019-03-09 21:06:34

标签: php arrays duplicates

我有这个数组,当ID的键值重复时,需要将数组元素合并为1,然后将两个总数相加。

array (
  0 => 
  array (
    'ID' => '300068',
    'Total' => '182.20',
  ),
  1 => 
  array (
    'ID' => '300112',
    'Total' => '5.64',
  ),
  2 => 
  array (
    'ID' => '300112',
    'Total' => '4.30',
  ),
  3 => 
  array (
    'ID' => '300095',
    'Total' => '66.43',
  ),
)

如上所述,键ID的值300112在数组中是重复的。因此,我想同时获取这两个重复项并获得9.94的总数,并得到一个看起来像这样的最终数组。

array (
  0 => 
  array (
    'ID' => '300068',
    'Total' => '182.20',
  ),
  1 => 
  array (
    'ID' => '300112',
    'Total' => '9.94',
  ),
  3 => 
  array (
    'ID' => '300095',
    'Total' => '66.43',
  ),
)

我还没有任何代码,因为我不确定该怎么做,因此希望获得任何指针。

1 个答案:

答案 0 :(得分:0)

如果您的数组如下:

$old = [["id" => 1, "total" => 2], ["id" => 1, "total" => 3]]

您想将其合并到

$new = [["id" => 1, "total" => 5]]

在要迭代的地方创建一个新数组,如果没有值则添加到新数组,或者如果有值则添加到新数组。

$new = []
foreach ($old as $old_array) {

  if (isset($new[$old_array["id"]]) $new[$old_array["id"] += $old_array["total"]
  else $new[$old_array["id"]]["value"] = $old_array["total"]

}

未经测试并且很长时间没有编写PHP,因此您应该了解上面代码中的工作内容:检查它是否存在于新数组中(如果存在,则添加old_array值),否则,将其总值设置为该值。