Maison  >  Questions et réponses  >  le corps du texte

Dans la boucle foreach en PHP, regroupez par date et obtenez la somme des mêmes lignes

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粉304704653P粉304704653422 Il y a quelques jours557

répondre à tous(1)je répondrai

  • P粉807239416

    P粉8072394162023-09-17 16:01:12

    # 构建数组
    $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);

    répondre
    0
  • Annulerrépondre