我有这个数组,当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',
),
)
我还没有任何代码,因为我不确定该怎么做,因此希望获得任何指针。
答案 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值),否则,将其总值设置为该值。