在PHP的foreach循环中,按日期分组并获取相同行的计数总和
P粉304704653
P粉304704653 2023-09-16 19:05:48
[PHP讨论组]

我有一个像这样的数组

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

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

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

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

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

    [5] => Array
        (
            [0] => 2023-06-30
            [1] => 5788
        )

    [6] => Array
        (
            [0] => 2023-06-30
            [1] => 1266
        )
)

我想按日期分组并求和值

$output=array();
foreach($array as $values){
    $date = $values[0];
    $output[$d][1]+=$values[1];
}

$output的结果是

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

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

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

这一切都没问题,但是我需要计算平均值,而不是求和值,所以我的想法是在foreach中获取同一天的总和,然后将总和除以同一天的数量。例如,对于日期2023-06-28,总和是5987,数量是3,所以结果应该是5987 / 3。

有没有办法可以做到这一点,或者在foreach中获得平均值的其他方法?

P粉304704653
P粉304704653

全部回复(1)
P粉807239416
# 构建数组
$output = [];
foreach($array as $values){
    $date = $values[0];
    if(!isset($output[$date])) {
        $output[$date] = ['total' => 0, 'count' => 0];
    }
    $output[$date]['total'] += $values[1];
    $output[$date]['count']++;
}

# 计算总和
foreach($output as $date => $data){
    $output[$date]['average'] = ($data['total'] / $data['count']);
}

print_r($output);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号