[英]merge array keys and add the values-PHP
我想将两个相同的键合并到一个数组中并获取值的总和。 我想要与现在相同的结构。因为此数据需要转换为JSON。
这就是我现在得到的。
{“数据”:[{“ count_of_invites”:5,“用户”:“ Rajesh”,“ id”:“ 53”},{“ count_of_invites”:9,“用户”:“学生”,“ id”:“ 45“},{” count_of_invites“:4,” user“:” Student“,” id“:” 45“}]}
如您所见,id 45是重复的。
预期的输出 {“ data”:[{“ count_of_invites”:5,“ user”:“ Rajesh”,“ id”:“ 53”},{“ count_of_invites”:13,“ user”:“学生”,“ id” :“ 45”}]}
如您所见,应删除重复条目,并应添加重复条目的count_of_invites 。
您可以通过以下方式实现:
$ids = array();
$output = array();
foreach ($input as $value) {
if (!isset($ids[$value["id"]])) {
$ids[$value["id"]]=$count($output);
$output[]=$value;
} else {
$output[$ids[$value["id"]]]["count_of_invites"] = $value["count_of_invites"];
$output[$ids[$value["id"]]]["user"] = $value["user"];
}
}
count方法被声明为变量,并且我已经添加了附加赋值运算符。
感谢您的帮助。
$ ids = array(); $输出= array();
foreach ($response as $value) {
if (!isset($ids[$value["id"]])) {
$ids[$value["id"]] = count($output);
$output[] = $value;
}
else {
$output[$ids[$value["id"]]]["count_of_invites"] += $value["count_of_invites"];
$output[$ids[$value["id"]]]["user"] = $value["user"];
}
}
<?php
$data = [
[
'id' => 2,
'name' => 'Paul',
'count' => 4
],
[
'id' => 3,
'name' => 'Peter',
'count' => 5
],
[
'id' => 3,
'name' => 'Peter',
'count' => 7
]
];
foreach($data as $array)
$counts[$array['id']][] = $array['count'];
$counts = array_map('array_sum', $counts);
foreach($data as $k => $array)
$data[$k]['count'] = $counts[$array['id']];
$data = array_unique($data, SORT_REGULAR);
print json_encode($data, JSON_PRETTY_PRINT);
输出:
[
{
"id": 2,
"name": "Paul",
"count": 4
},
{
"id": 3,
"name": "Peter",
"count": 12
}
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.