Einzelnen Beitrag anzeigen
Ungelesen 17.03.12, 22:07   #12
smdata2
Anfänger
 
Registriert seit: Apr 2009
Beiträge: 24
Bedankt: 5
smdata2 ist noch neu hier! | 0 Respekt Punkte
Standard

Dafür würde ich folgendes machen:

1:
Die Spalten einer Zeile werden nur durchlaufen wenn mindestens der erste Wert ungleich 0 ist:
PHP-Code:
/*
 * 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++;
    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;
    }
  }

2:
Bei der Bildung des Durchschnitts kann jetzt nicht mehr einfach $lines - 1 als Anzahl genommen werden, stattdessen wird nun der vorher ermittelte Wert $count genommen:
PHP-Code:
/*
 * 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

Hoffe, dass es dich weiterbringt!
smdata2 ist offline   Mit Zitat antworten