myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Webmaster Talk > Entwicklung & Programmierung
Seite neu laden

Zeit aus csv-Datei

Willkommen

myGully

Links

Forum

 
 
 
Themen-Optionen Ansicht
Prev Vorheriger Beitrag   Nächster Beitrag Next
Ungelesen 19.03.12, 20:05   #18
Epeos
Ist öfter hier
 
Benutzerbild von Epeos
 
Registriert seit: Nov 2010
Beiträge: 198
Bedankt: 96
Epeos ist noch neu hier! | 0 Respekt Punkte
Standard

Habs ein bisschen umgebaut:

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);

//festlegen, welches die Start- und Ende-Spalten sind, dabei hat die erste Spalte den Index 0
$startspalte 3;
$endespalte 7;

/*
 * 2-Dimensionales Array ablaufen und alle nichtleeren Zeiten in neues Array kopieren
 * ACHTUNG: i-Schleife beginnt mit 1 um die Kopfzeile der CSV-Datei zu überspringen
 */
$tinseconds = array();
$count 0;
for(
$i=1$i<count($lines); $i++) {
  for(
$j=$startspalte$j<$endespalte$j++) {
    if (!empty(
$lines[$i][$j])) {

        
// Wert nach Minuten und Sekunden auftrennen und als Sekundenwert ablegen
        
$time preg_split('/:/'$lines[$i][$j]);
        
$seconds $time[0] * 60 $time[1];
        
$tinseconds[$j][] = $seconds;
    }
  }
}

/* $tinseconds sieht in etwa so aus:
 * $tinseconds[3] alle Werte aus Spalte 3
 * $tinseconds[4] alle Werte aus Spalte 4; die Anzahl muss nicht mit $tinseconds[3] übereinstimmen
 * ...
 */

/*
/*
 * Durchschnitt der einzelnen Spalten bilden
 */
$averages = array();
for(
$i=$startspalte$i<$endespalte$i++) {
  
// Über die einzelnen Spalten Summe bilden und durch Anzahl der Einträge teilen
  // --> ergibt den Durchschnittswert in Sekunden
  
if (count($tinseconds[$i])>0) {
    
$seconds array_sum($tinseconds[$i]) / count($tinseconds[$i]);
    
// 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);
Bei T1 komm ich auf Deine Zeit. Rest hab ich nicht nachgerechnet. Das funktioniert jetzt auch, wenn einzelne Werte in T1, T2, T3 oder TGes nicht gesetzt sind.
__________________
On a long enough timeline, the survival rate for everyone drops to zero. (Fight Club)
Epeos ist offline   Mit Zitat antworten
 


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.


Sitemap

().