繁体   English   中英

合并数组键并添加值-PHP

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM