Igendwie rechnet das nicht wirklich korrekt.

Hier mal eine Test csv mit allen Spalten:
Code:
pack;set;runs;T1;T2;T3;Tges;Datum;Zeit;out;other;zero;percent
7480;31260;;;;;;17.03.2012;16:30;08:22;38;;68%
77754;9702;27;06:46;02:46;01:03;10:36;17.03.2012;16:30;08:22;38;;68%
2356;41294;;;;;;17.03.2012;16:30;08:22;38;;68%
45564;91278;68;04:30;00:52;00:19;05:40;17.03.2012;16:30;08:22;38;;68%
23566;91249;37;05:48;03:05;00:48;09:42;17.03.2012;16:30;08:22;38;;68%
88932;41625;47;03:31;02:59;00:23;06:53;17.03.2012;16:30;08:22;38;;68%
93136;91218;45;03:50;03:07;00:30;07:27;17.03.2012;16:30;08:22;38;;68%
65337;84681;;;;;;17.03.2012;16:30;08:22;38;;68%
22345;41215;28;06:14;03:27;01:23;11:03;17.03.2012;16:30;08:22;38;;68%
46485;84601;35;03:57;04:59;00:50;09:46;17.03.2012;16:30;08:22;38;;68%
81614;16179;;;;;;17.03.2012;16:30;08:22;38;;68%
41603;81271;42;05:12;03:48;00:47;09:47;17.03.2012;16:30;08:22;38;;68%
46407;84612;;;;;;17.03.2012;16:30;08:22;38;;68%
46408;84621;;;;;;17.03.2012;16:30;08:22;38;;68%
5734;6773;;;;;;17.03.2012;16:30;08:22;38;;68%
46477;84671;;;;;;17.03.2012;16:30;08:22;38;;68%
3435;7778;32;06:32;03:38;01:35;11:45;17.03.2012;16:30;10:24;38;;68%
4357;44567;27;06:54;03:39;00:47;11:20;17.03.2012;16:30;10:24;38;;68%
81296;63113;;;;;;17.03.2012;16:30;10:24;38;;68%
16129;26611;31;07:10;01:20;00:33;09:03;17.03.2012;16:30;10:52;38;;68%
Startspalte ist 3, Endspalte ist 7, und hier das berechnete Ergebnis:
Array ( [0] => 00:00 [1] => 00:00 [2] => 00:00 [3] => 03:01 )
Hier das komplette S*****:
PHP-Code:
<?php
// CSV-Datei öffnen
$fh = fopen('aht.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();
$count = 0;
for($i=1; $i<count($lines); $i++) {
if(!empty($lines[$i][0])) {
$count++;
//festlegen, welches die Start- und Ende-Spalten sind, dabei hat die erste Spalte den Index 0
//Hier im Beispiel werden die 2., 3. und 4. Spalte in der Auswertung berücksichtigt
$startspalte = 3;
$endespalte = 7;
for($j=$startspalte; $j<$endespalte; $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 (in $count ermittelt) teilen
// --> ergibt den Durchschnittswert in Sekunden
$seconds = $sums[$i] / $count;
// 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);
Hab ich was übersehen ??
.