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

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

数组 数值 求和 日期 954    来源:    2025-03-14

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

示例代码

<?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. 初始化结果数组:我们创建一个空数组$result来存储合并后的结果。

  2. 遍历数组:使用foreach循环遍历$dates数组,并通过索引获取对应的数值。

  3. 检查日期是否存在:在每次循环中,检查当前日期是否已经存在于$result数组中。如果存在,则将对应的数值累加;如果不存在,则将日期和数值添加到$result数组中。

  4. 输出结果:最后,使用print_r函数输出合并并求和后的结果。

优化建议

  • 使用array_combine:如果你有两个独立的数组(一个日期数组和一个数值数组),可以使用array_combine将它们合并为一个关联数组,然后再进行求和操作。

  • 使用array_reduce:如果你更喜欢函数式编程风格,可以使用array_reduce来实现相同的功能。

使用array_reduce的示例

<?php
$dates = ['2023-10-01', '2023-10-02', '2023-10-01', '2023-10-03'];
$values = [100, 200, 150, 300];

$result = array_reduce(array_keys($dates), function($carry, $index) use ($dates, $values) {
    $date = $dates[$index];
    $value = $values[$index];
    $carry[$date] = isset($carry[$date]) ? $carry[$date] + $value : $value;
    return $carry;
}, []);

print_r($result);
?>

这个示例使用了array_reduce函数来实现相同的功能,代码更加简洁。

总结

通过上述方法,你可以高效地将日期与数值数组按组合并并求和。根据你的需求和编程风格,可以选择使用foreach循环或array_reduce函数来实现。