Lieber Paul1,
Die Daten erhalte ich als csv-Datei und lese sie einfach in ein PHP array ein.
dann bist also Du selbst für die Struktur verantwortlich? OK, das macht die Sache leichter.
- Du hast in der ersten Spalte „name“ offenbar ein Tagesdatum. Dieses willst Du als Gruppe verstanden wissen.
- Die Werte in der zweiten Spalte sind floats. Deren Schnitt lässt sich schnell und schlank berechnen
array_sum($a)/count($a)
fällt mir da ein.
Gruppenwechsel ... schau ich mir an...
Genau, und danach hast Du vielleicht folgende Struktur:
$csv_data = [
"01.01.2018" => [1.1, 1.3, 1.2, 1.2],
"02.01.2018" => [2.2, 2.4]
];
$averages = [];
foreach ($csv_data as $date => $values) {
if (count($values)) {
$averages[$date] = sprintf(
'%0.1f', // auf eine Kommastelle gekürzt
array_sum($values) / count($values)
);
} else {
// nicht durch 0 teilen!
$averages[$date] = '?'; // oder $averages[$date] = 0;
}
}
print_r($averages);
Ausgabe:
Array(
[01.01.2018] => 1.2
[02.01.2018] => 2.3
)
Liebe Grüße
Felix Riesterer