Dans la boucle foreach en PHP, regroupez par date et obtenez la somme des mêmes lignes
P粉304704653
P粉304704653 2023-09-16 19:05:48
0
1
567

J'ai un tableau comme celui-ci

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
        )
)

Je souhaite regrouper par date et additionner les valeurs

$output=array();
foreach($array as $values){
    $date = $values[0];
    $output[$d][1]+=$values[1];
}
Le résultat de

$output est

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
        )
)

Tout va bien, mais je dois calculer la moyenne, pas additionner les valeurs, donc mon idée est d'obtenir la somme du même jour dans un foreach, puis de diviser la somme par le montant du même jour. Par exemple, pour la date 2023-06-28, la somme est 5987 et la quantité est 3, le résultat doit donc être 5987/3.

Existe-t-il un moyen de faire cela, ou un autre moyen d'obtenir la valeur moyenne dans un foreach ?

P粉304704653
P粉304704653

répondre à tous(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);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal