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

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($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();
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
smdata2 ist offline   Mit Zitat antworten