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:46   #17
smdata2
Anfänger
 
Registriert seit: Apr 2009
Beiträge: 24
Bedankt: 5
smdata2 ist noch neu hier! | 0 Respekt Punkte
Standard

Soo meiner Meinung nach funktioniert es, es kommen jedenfalls die gleichen Werte wie mit der MITTELWERT()-Funktion von Excel raus
Sag einfach Bescheid!

Edit: Die Änderungen sind eigentlich, dass nun nicht das erste Feld der Spalte, sondern das Feld mit dem Index $startspalte geprüft wird, sowie die Anweisung array_values nach der Summation, um unabhängig von den Spaltenindizes die Summen einfacher durchlaufen zu können.

PHP-Code:
<?php 
// CSV-Datei öffnen 
$fh fopen('bsp3.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++) {     
  
// Festlegen, welches die Start- und Ende-Spalten sind, dabei hat die erste Spalte den Index 0 
  
$startspalte 3
  
$endespalte 7;
  if(!empty(
$lines[$i][$startspalte])) { 
    
$count++; 
  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
  } 
 }    
}
// Durch array_values werden die Indizes des Arrays umgewandelt, um den Durchschnitt einfacher
// berechnen zu können (siehe http://php.net/manual/de/function.array-values.php)
$sums array_values($sums);
 
/* 
/* 
 * 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);
smdata2 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 08:33 Uhr.


Sitemap

().