Werte aus txt Datei auslesen und in Array packen

aargau

Erfahrenes Mitglied
Hallo
Ich habe eine Textdatei, welche sich alle paar Minuten verändert. Da ich nun den Durchschnittswert der Zahlen im file in eine DB Speichern muss, habe ich mir gedacht ich mache das ganze mit explode(" ",$text) und nehme so einfach die werte in ein Array.
Mein Problem ist nun allerdings, dass das txt File nicht nach X abständen die nächste Zahl liefert sondern das file Formatiert ist und die Abstände verschieden sind.
Es sieht also z.B: so aus:
Code:
  890.66     15.41
  292.56      4.18
  701.26     11.17
  263.46     27.71
  311.97      5.59
  843.35     16.76
  113.97      2.79
  664.00     11.18
  143.27      2.79
  315.21      6.99
Wobei ich nun ein array in dieser folge möchte:
[0][wert1]="890.66" ;
[0][wert2]="4.18";
[1][wert1]="701.26"
usw...

Nur wie filtere ich die werte nun am einfachsten aus dem txt file?
 
Hallo,

du müsstest zweimal explode() aufrufen: Das erste Mal mit dem Zeilenumbruch und das zweite Mal mit dem Leerzeichen als Begrenzungszeichen. Die dabei entstehenden leeren Arrayelemente kannst du mit der Funktion array_filter() entfernen und schließlich könnte man noch mit array_values() die Schlüsselwerte des Arrays neu aufbauen:

Versuch's mal so:
PHP:
$result = explode("\n",$data);
foreach($result as $key => $val) {
	$result[$key] = array_values(array_filter(explode(' ',trim($val))));
}
 
Anderer Vorschlag (oder ist das mal wieder zu kompliziert gedacht?):

PHP:
<?php
$file = fopen("txtFile.txt", "r");

while ($line = fgets($file, 1000)) {
	$line = str_replace("  ", " ", trim($line));
	$line = explode("  ", $line);
	$array[] = doubleval($line[0]);
	$array[] = doubleval($line[1]);
}

fclose ($file);

var_dump($array);

echo "<br />";

echo "Summe " .array_sum($array);


echo "<br />";

echo "Durchschnitt " .(array_sum($array)/count($array));

?>
 
Mit preg_match_all() wäre das auch möglich.
Ich bin bisher allerdings noch etwas unsicher, welche Werte du genau haben willst. Laut deinem Beispielergebnis im ersten Post möchtest du Zeile 1 Wert 1, Zeile 2 Wert 2, Zeile 3 Wert 1 ... haben, also immer über Kreuz. Deinem Wortlaut nach möchtest du aber den Durchschnitt aller Werte haben.
 
Hallo zusammen
Also es ist so: Ich möchte den duchschnitt von Spalte eins und Spalte zwei einzeln haben. Ich denke durch eure beispiele komm ich da nun auch ran, wusste nur nicht wie ich die Leeren einträge im array raus kriege.
Sinn und Zweck: Traffic vom Router (im durchschnitt von einer Minute) auszugeben und im Admin Bereich der Website anzuzeigen.
 
Zurück