You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中按日期分组计算数组元素平均值的实现方法

PHP按日期分组计算平均值的实现方法

首先修正你原代码里的一个小错误:你定义了$date = $values[0];,但后续使用了未定义的$d,应该改成$output[$date][1]才能正确分组。

要实现按日期计算平均值,我们需要在遍历过程中同时维护每个日期的数值总和和元素个数,最后用总和除以个数得到平均值。具体实现如下:

实现代码

$output = array();
// 第一步:遍历原数组,统计每个日期的总和与元素个数
foreach ($array as $values) {
    $date = $values[0];
    $num = $values[1];
    
    if (!isset($output[$date])) {
        // 首次遇到该日期,初始化总和和计数
        $output[$date]['sum'] = $num;
        $output[$date]['count'] = 1;
    } else {
        // 已存在该日期,累加总和,计数加1
        $output[$date]['sum'] += $num;
        $output[$date]['count'] += 1;
    }
}

// 第二步:计算平均值,整理成目标格式
$result = array();
foreach ($output as $date => $data) {
    // 平均值 = 总和 / 个数,需要保留小数可使用round()
    $average = $data['sum'] / $data['count'];
    $result[] = array($date, $average);
}

// 查看结果
print_r($result);

代码说明

  1. 第一遍遍历:用$output数组的键存储日期,每个键对应的值保存sum(当日数值总和)和count(当日元素个数)。首次遇到某日期时初始化数据,后续遇到则累加更新。
  2. 第二遍遍历:基于统计好的总和与个数计算平均值,整理成和原数组结构一致的二维数组。

最终结果示例

运行后会得到如下格式的结果:

Array
(
    [0] => Array
        (
            [0] => 2023-06-28
            [1] => 1995.6666666667
        )

    [1] => Array
        (
            [0] => 2023-06-29
            [1] => 2.5
        )

    [2] => Array
        (
            [0] => 2023-06-30
            [1] => 3527
        )
)

如果需要固定小数位数,可使用round($average, 2)这类函数处理。

内容的提问来源于stack exchange,提问作者user994461

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:07:20