插件窝 干货文章 PHP数组高效合并:如何将日期与数值数组按组合并并求和?

PHP数组高效合并:如何将日期与数值数组按组合并并求和?

数组 日期 求和 result 980    来源:    2025-03-13

在PHP中,如果你有两个数组,一个包含日期,另一个包含数值,并且你想按日期合并并求和,可以使用array_mergearray_sum等函数来实现。以下是一个示例代码,展示如何高效地合并并求和:

示例代码

<?php
// 假设有两个数组
$dates = ['2023-10-01', '2023-10-02', '2023-10-01', '2023-10-03'];
$values = [100, 200, 150, 300];

// 创建一个空数组来存储合并后的结果
$result = [];

// 遍历日期数组
foreach ($dates as $index => $date) {
    // 如果日期已经存在于结果数组中,则将对应的值相加
    if (isset($result[$date])) {
        $result[$date] += $values[$index];
    } else {
        // 否则,将日期和对应的值添加到结果数组中
        $result[$date] = $values[$index];
    }
}

// 输出结果
print_r($result);
?>

输出结果

Array
(
    [2023-10-01] => 250
    [2023-10-02] => 200
    [2023-10-03] => 300
)

解释

  1. 初始化数组:我们有两个数组,$dates$values,分别存储日期和对应的数值。

  2. 遍历数组:我们使用 foreach 循环遍历 $dates 数组。对于每个日期,我们检查它是否已经存在于 $result 数组中。

  3. 合并并求和

    • 如果日期已经存在于 $result 数组中,我们将对应的值相加。
    • 如果日期不存在于 $result 数组中,我们将日期和对应的值添加到 $result 数组中。
  4. 输出结果:最后,我们使用 print_r 函数输出合并并求和后的结果。

优化建议

  • 使用 array_combine:如果你有两个独立的数组(一个日期数组和一个数值数组),你可以使用 array_combine 将它们组合成一个关联数组,然后再进行合并和求和。
$combined = array_combine($dates, $values);
  • 使用 array_reduce:如果你更喜欢函数式编程风格,可以使用 array_reduce 来实现相同的功能。
$result = array_reduce(array_keys($combined), function($carry, $date) use ($combined) {
    $carry[$date] = ($carry[$date] ?? 0) + $combined[$date];
    return $carry;
}, []);

总结

通过这种方式,你可以高效地将日期与数值数组按组合并并求和。这种方法的时间复杂度为 O(n),其中 n 是数组的长度,因此在处理大量数据时也能保持较好的性能。