Heim  >  Fragen und Antworten  >  Hauptteil

Gruppieren Sie in der foreach-Schleife in PHP nach Datum und erhalten Sie die Zählsumme derselben Zeilen

Ich habe ein Array wie dieses

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

Ich möchte nach Datum gruppieren und die Werte summieren

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

$output ist

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

Das ist alles in Ordnung, aber ich muss den Durchschnitt berechnen und nicht die Werte summieren. Meine Idee ist also, die Summe desselben Tages in einem foreach zu ermitteln und die Summe dann durch den Betrag desselben Tages zu dividieren. Für das Datum 28.06.2023 beträgt die Summe beispielsweise 5987 und die Menge 3, sodass das Ergebnis 5987/3 sein sollte.

Gibt es eine Möglichkeit, dies zu tun, oder eine andere Möglichkeit, den Durchschnitt in einem Foreach zu ermitteln?

P粉304704653P粉304704653422 Tage vor556

Antworte allen(1)Ich werde antworten

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

    Antwort
    0
  • StornierenAntwort