Einzelnen Beitrag anzeigen
Ungelesen 18.03.12, 12:03   #15
Wasabi72
Anfänger
 
Registriert seit: May 2009
Beiträge: 18
Bedankt: 0
Wasabi72 ist noch neu hier! | 0 Respekt Punkte
Standard

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($fh0';')) !== 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 ??

.
Wasabi72 ist offline   Mit Zitat antworten