Felix Riesterer: PHP Array-werte zuordnen und mitteln

Beitrag lesen

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.

  1. Du hast in der ersten Spalte „name“ offenbar ein Tagesdatum. Dieses willst Du als Gruppe verstanden wissen.
  2. 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