Hm ein ganz interessantes Beispiel finde ich

Also habe ich mich mal rangesetzt, weil es mich selber auch interessiert, hat wie das am Besten geht:
PHP-Code:
<?php
// CSV-Datei öffnen
$fh = fopen('bsp.csv', 'r');
$lines = array();
// Zeilenweise einlesen (fgetcsv für gleichzeitiges Lesen und "Splitten")
while(($line = fgetcsv($fh, 0, ';')) !== false) {
$lines[] = $line;
}
// Datei schließen
fclose($fh);
/*
* 2-Dimensionales Array ablaufen und Zeiten aufsummieren
* ACHTUNG: i-Schleife beginnt mit 1 um die Kopfzeile der CSV-Datei zu überspringen
*/
$sums = array();
for($i=1; $i<count($lines); $i++) {
for($j=0; $j<count($lines[$i]); $j++) {
// Falls es der erste Durchlauf ist, wird die Summe mit 0 vorbelegt
if(!isset($sums[$j]))
$sums[$j] = 0;
// Wert nach Minuten und Sekunden auftrennen und als Sekundenwert ablegen
$time = preg_split('/:/', $lines[$i][$j]);
$seconds = $time[0] * 60 + $time[1];
$sums[$j] += $seconds;
}
}
/*
* Durchschnitt der einzelnen Spalten bilden
*/
$averages = array();
for($i=0; $i<count($sums); $i++) {
// Summe aus dem Array holen und durch Anzahl der Zeilen - 1 (Erneut wegen Kopfzeile der CSV-Datei) teilen
// --> ergibt den Durchschnittswert in Sekunden
$seconds = $sums[$i] / (count($lines) - 1);
// Volle Minuten bestimmen, eventuell mit führender 0
$avg_minutes = str_pad(floor($seconds / 60), 2, '0', STR_PAD_LEFT);
$avg_seconds = str_pad(($seconds % 60), 2, '0', STR_PAD_LEFT);
$averages[] = $avg_minutes . ':' . $avg_seconds;
}
// Testweise ausgeben lassen :)
print_r($averages);
Erzeugt mit deinen Daten folgende Ausgabe:
Code:
Array
(
[0] => 05:24
[1] => 03:34
[2] => 00:24
[3] => 09:23
)
Hoffe dass es dir und vielleicht auch anderen weiterhilft