gpt4 book ai didi

php - 具有匹配特征的PHP数组的元素如何处理成一系列聚合?

转载 作者:可可西里 更新时间:2023-11-01 00:39:49 26 4
gpt4 key购买 nike

本质上,我想对 PHP 数组执行一种分组,然后将每个组中的元素压缩成一个聚合值。

具体来说,我有一个具有以下形式的 PHP 数组:

[
[date, int],
[date, int],
[date, int],
...
[date, int]
]

我想处理这个,以便我最终得到一个数组数组,每个数组包含一个唯一的日期和原始数组中与该日期一起出现的整数的总和,例如:

[
['2017-01-01', 1],
['2017-01-01', 1],
['2018-01-01', 1],
['2019-01-01', 1],
['2019-01-01', -1],
['2020-01-01', -1],
['2020-01-01', 1],
['2020-01-01', -1]
]

应该是这样的:

[
['2017-01-01', 2],
['2018-01-01', 1],
['2019-01-01', 0],
['2020-01-01', -1]
]

原始数组按日期顺序排列。

实现此目标的有效方法是什么?

最佳答案

我会这样做,假设您的输入在 $arr 中:

foreach ($arr as list($date, $num)) {
$result[$date] = isset($result[$date]) ? $result[$date]+$num : $num;
}

现在 $result 几乎就是您所要求的了。它实际上会生成键/值对,其中键是日期,值是数字。如果您真的更喜欢嵌套数组格式,那么:

foreach ($arr as list($date, $num)) {
if (!isset($result[$date])) $result[$date] = [$date, 0];
$result[$date][1] += $num;
}

这仍然会将日期作为键,但它们会将对作为值。如果你想要一个顺序数组而不是日期作为键,那么添加:

$result = array_values($result);

关于php - 具有匹配特征的PHP数组的元素如何处理成一系列聚合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46738411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com