suche PHP Hilfe "wie speichere ich Werte in einem String"?

Für allgemeine Software
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 408
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 105 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

suche PHP Hilfe "wie speichere ich Werte in einem String"?

#1

Beitrag von Wetterfrosch »

Hallo,

hier gibt es doch PHP-Spezialisten für die folgende Fragestellung sicherlich lachhaft ist:

Kann mir Jemand sagen, wie ich 50 Messwerte (aus einer Variablen, die alle paar Sekunden neu gesendet wird)in einen String speichern kann, darin dann alle 50 Messwerte zusammenzählen und durch 50 teilen?
Mit jedem weiteren Messwert, sollte dann der älteste Messwert im String herausfallen, sodass immer 50 Messwerte darin erhalten sind und aus diesen dann der Mittelwert gebildet wir?

Vielen Dank für die Hilfe.
LG Frank
Benutzeravatar
rodolfo
Offline
Beiträge: 256
Registriert: 27 Nov 2020, 15:59
Wohnort: Pfaffenhofen
Hat sich bedankt: 23 mal
Danksagung erhalten: 21 mal
Kontaktdaten:

Re: suche PHP Hilfe "wie speichere ich Werte in einem String"?

#2

Beitrag von rodolfo »

Hallo Frank,

Array erstellen und mit den Werten aus deiner Variablen befüllen - per array_unshift($array, wert) schiebst du ein neues Element an den Anfang des Arrays. Länge des Arrays per count($array) abfragen, hat das Array 51 Elemente wird das letzte Element mit array_pop($array) entfernt. Nun die Elemente des Arrays per array_sum($array) addieren und durch 50 teilen - fertig.
Viele Grüße, Rolf

Bild
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 408
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 105 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: suche PHP Hilfe "wie speichere ich Werte in einem String"?

#3

Beitrag von Wetterfrosch »

OK, Dankeschön, kannst du mir noch schnell das PHP Schipsel aufzeigen, wie ich dann das Array am Anfang anlege und in einer txt-datei reinschreibe und abspeichere, damit bei nächsten Durchlauf dann dieses array immer um einen Wert dann erweitert wird (bis eben die 50 Einzelwerte erreicht sind)?
Irgendwie baue ich da gerade Mist zusammen.

LG Frank
Benutzeravatar
rodolfo
Offline
Beiträge: 256
Registriert: 27 Nov 2020, 15:59
Wohnort: Pfaffenhofen
Hat sich bedankt: 23 mal
Danksagung erhalten: 21 mal
Kontaktdaten:

Re: suche PHP Hilfe "wie speichere ich Werte in einem String"?

#4

Beitrag von rodolfo »

Ein Array namens "valuelist" legst du initial wie folgt an:

Code: Alles auswählen

$valuelist = array();
Den Wert der Variablen (hier beispielhaft 15) schreibst du so in das Array:

Code: Alles auswählen

array_unshift($valuelist, 15);
Das Array legst du wie folgt in einer Datei (hier beispielhaft myvalues.txt) ab:

Code: Alles auswählen

file_put_contents("myvalues.txt", serialize($valuelist));
Ein Array aus der Datei befüllst du so:

Code: Alles auswählen

$valuelist  = unserialize(file_get_contents("myvalues.txt"));
Viele Grüße, Rolf

Bild
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 408
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 105 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: suche PHP Hilfe "wie speichere ich Werte in einem String"?

#5

Beitrag von Wetterfrosch »

Hi,

also irgendwas mache ich da falsch, mit deinem Befehl wird der Wert im Array ständig überschrieben anstatt immer einen neuen Wert in das Array zuzufügen.
Ich vermute ich muss da irgendwie eine Schleife noch einbauen?

Irgendwie komme ich da nicht weiter.

Wie gesagt, in das Array sollen nacheinander 50 Werte reingeschrieben werden, d.h. nach jedem Durchlauf des Scriptes wird ein Wert hinzugefügt, bis das Array mit 50 Einzelwerten gefüllt ist, ab dann soll bei weiterem Hinzufügen immer der älteste Wert entfernt werden und aus den 50 Einzelwerten die Summe und dann daraus der Mittelwert gebildet werden.

Ich bekomms irgendwie nicht hin, habe da doch noch zu wenig Kenntnisse.
Kannst du mir da scripttechnisch noch mal helfen?

LG Frank
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: suche PHP Hilfe "wie speichere ich Werte in einem String"?

#6

Beitrag von WernerWetter »

Es gibt wohl tausende Möglichkeiten. Ich würde mit array_push/arary_shift arbeiten.

Werte am Ende hinzufügen

Code: Alles auswählen

The array_push($array, $wert) function inserts one or more elements to the end of an array. 
Mehr als 50 Einträge

Code: Alles auswählen

if (count($array) > 50)
Das erste Element lesen und löschen

Code: Alles auswählen

The array_shift($array) function removes the first element from an array, and returns the value of the removed element.
Hinweis:
Mit print_r($array) kannst Du dir den Inhalt des Arrays ausgeben lassen.

MfG Werner

Edith:
Berechnen des Mittelwerts geht in php ganz einfach:

Code: Alles auswählen

 array_sum($array) / count($array) 
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 408
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 105 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: suche PHP Hilfe "wie speichere ich Werte in einem String"?

#7

Beitrag von Wetterfrosch »

Hallo,

es geht mir darum:
meine Wetterstation liefert imer den aktuellen Windwert anstatt den 10-minütigen Mittelwein.
Die Station sendet alle 12 Sekunden den aktuellen Windwert, d.h. 50 werte in 10 Minuten und aus diesen will ich den Mittwelwert bilden und ausgeben.

Habe es nun mit eurer und Googels-Hilfe gelöst bekommen, habe es so gemacht:

Code: Alles auswählen

$windmittel = 'mittelwind.txt';

file_put_contents($windmittel, $wind, FILE_APPEND); //Wind ist die Variable der Wetterstation

$a = explode( ';', file_get_contents($windmittel) );

if ( count($a) > 50 )
    array_shift( $a );

$a[] = $neue_nummer;

file_put_contents( $windmittel, implode(';', $a) );

$windneu = array_sum($a) . "\n";
$windneu = $wind/50;
$windneu = round($wind,1);

Zuletzt geändert von Wetterfrosch am 23 Jan 2021, 09:14, insgesamt 1-mal geändert.
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: suche PHP Hilfe "wie speichere ich Werte in einem String"?

#8

Beitrag von WernerWetter »

Hallo,

gut das es geht. Aber diese Zeilen kommen mir komisch vor:

Code: Alles auswählen

$windneu = array_sum($ah) . "\n";
$windneu = $wind/50;
$windneu = round($wind,1);
Zeile#1 Warum hängst Du einen Zeilenumbruch "\n" an das Ende?
Zeile#2 Die Berechnung stimmt nur bei 50 Einträgen. Bei weniger (am Anfang) kommt Mist raus
Wie wäre es mit (ungetestet):

Code: Alles auswählen

$windneu = round((array_sum($ah) / count($ah)), 1);
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 408
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 105 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: suche PHP Hilfe "wie speichere ich Werte in einem String"?

#9

Beitrag von Wetterfrosch »

Hi,

das \n war so in einer Vorlage die ich in google gefunden hatte, deswegen habe ich es einfach übernommen.

ja, stimmt, wenn weniger als 50 Werte drin sind, kommt Mist raus, sind aber eigentlich immer 50 werte vorhanden, kann das aber wie von dir vorgeschlagen mal ausprobieren.
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: suche PHP Hilfe "wie speichere ich Werte in einem String"?

#10

Beitrag von WernerWetter »

...kann das aber wie von dir vorgeschlagen mal ausprobieren.
Alles freiwillig, kein muss ;)
Antworten