<?php
header('Content-Type: text/plain');
$arr = [
[ '01.01.2022', '08:00', 100 ], # a.k.a. „Zeile“
[ '01.01.2022', '12:00', 101 ],
[ '01.01.2022', '16:00', 102 ],
[ '02.01.2022', '12:00', 101 ],
[ '03.01.2022', '08:00', 102 ],
[ '03.01.2022', '16:00', 104 ]
];
# Ok. Wir brauchen einen Hilfsarray:
$helper = [];
# Zeile für Zeile:
foreach ( $arr as $row ) {
# wenn es im Hilfsarray noch keine Zeile für das Datum gibt:
if ( empty( $helper[ $row[0] ] ) ) {
# Lege eine solche an und schreibe den Wert aus der 3. Spalte
# in deren Spalte 'sum' und die 1 in die Spalte 'count'
$helper[ $row[0] ]['sum'] = $row[2];
$helper[ $row[0] ]['count'] = 1;
} else {
# Addiere den Wert aus der 3. Spalte zur Spalte 'sum'
# Erhöhe den Counter
$helper[ $row[0] ]['sum'] += $row[2];
$helper[ $row[0] ]['count'] ++;
}
echo '----------------------------------------------------' . PHP_EOL;
echo 'Hilfsarray nach dem Einlesen einer (weiteren) Zeile:' . PHP_EOL;
echo '----------------------------------------------------' . PHP_EOL;
print_r( $helper);
}
# Fertíg? Ausgabe!
echo '######################################' . PHP_EOL;
foreach ( array_keys( $helper ) as $itemKey ) {
echo "$itemKey : ", $helper[$itemKey]['sum'] / $helper[$itemKey]['count'], PHP_EOL;
}
Ausgaben:
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 100
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 201
[count] => 2
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 102
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 206
[count] => 2
)
)
######################################
01.01.2022 : 101
02.01.2022 : 101
03.01.2022 : 103
Ach so: Manöverkritik
- Die von Dir gezeigten Daten sehen „schwer subobtimal organisiert“ aus. Mormalerweise würde man einen Timestamp notieren.
- Und falls die Daten in einer Datenbank liegen würde man eine Datenbankfunktion wie
AVG("anzahl")
und ein ``GROUP_BY "date" im SELECT verwenden...