vergleichen und bei Bedarf Array erweitern
Hallo zusammen,
ich stehe wieder für mich unlösbaren Problem wobei ich Eure geschätzte Hilfe benötige. Ich habe 2 Arrays (s. unten) die ich miteinander vergleichen möchte. Das 1. Array beinhaltet alle verfügbaren Sensoren die im 2. Array vorkommen sollten (im Bestfall). Wenn z. B. im 2. Array der Sensor "S01-01" fehlt, soll das 2. Array um diesen fehlenden Sensor erweitert werden. Das erweitere Element muss das gleiche Datum wie die anderen haben. Vielleicht habt Ihr für mich einen Lösungsweg wie ich diese beiden Arrays durchlaufen könnte und zum gewünschten Ergebnis komme. Eine Struktur wäre für mich schon ausreichend. Aufbau 1. Array: PHP-Code:
PHP-Code:
LG Dietmar |
AW: vergleichen und bei Bedarf Array erweitern
Zitat:
|
AW: vergleichen und bei Bedarf Array erweitern
Hallo meikel,
Danke für die Antwort. Ist eine durchaus sinnvolle Gegenfrage. 1. Array kommt von der Datenbank 2. Array von einer csv-Datei Was mir noch aufgefallen ist. Passiert durch copy/paste. Beim zweiten Array nach dem Vermerk "// Hier beginnt das nächste Messintervall usw. Beim Datum sollte : 00:33:44 2012/10/21 stehen. Sonst wäre es ja kein neues Messinterval. Danke Dietmar |
AW: vergleichen und bei Bedarf Array erweitern
Ich verstehe immer noch nicht den Sinn dessen, für den Du einen Algorithmus suchst.
Zitat:
Ungünstig bei den Bezeichnern ist, daß sie mathematische Symbole enthalten. Ein Ersatz des - (Minus) durch _ (Unterstrich) wäre angeraten. Zitat:
Falls nur ein Meßintervall und keine Speicherung der Ergebnisse in der DB: erstelle ein assoziatives Array aus der Abfrage nach folgendem Schema: PHP-Code:
$result_messintervall[$SENSOR_NAME] = array(...); Um nicht gesetzte Sensoren zu ermitteln, prüfst Du in einer Schleife PHP-Code:
verwende eine Vorbelegung, bei der ein Wert auf NULL oder FALSE gesetzt wird. Und danach suchst Du in Abhängigkeit vom Meßintervall. |
AW: vergleichen und bei Bedarf Array erweitern
Hallo meikel,
danke nochmals, dass Du Dich meines Problems annimmst. Ich möchte mich aber auch entschuldigen, für die anscheinend lückenhaften Informationen. Da Dein letzter Beitrag für mich mittlerweile wie ein spanischen Dorf klingt (liegt nicht an Dir), da ich mich gedanklich an die Sensoren, Arrays und foreach-Schleifen verstricke. Darum kann ich nicht mehr beurteilen, ob Dein Vorschlag schon die Lösung wäre. Ich möchte da meine Erklärungen meines Problems erweitern, da ich nicht möchte, Deine Zeit unnötig in Anspruch zu nehmen und Du nur von Vermutung ausgehst. So und jetzt gehts los: 1. Sinn dieser Fragestellung ist eine Tabelle die die Zeitintervalle, Sensoren, Messwerte übersichtlich darstellt. Eigentlich nichts anderes als eine Art Sitzplatzreservierung. Es gibt Reihen (sprich das wären die einzelnen Messintervalle) und es gibt Spalten (sprich dies wären die einzelnen Sensoren) und die einzelnen Sitzplätze wären dann die Messwerte. Die Daten stehen in einer Datenbank mit folgenden Aufbau: Tabelle "Sensoren" -> sensorid, sensorname, f_messeinheit, etc. Tabelle "Messwert" -> zeitstempel, f_sensorid, messwert 2. Die CSV-Datei wird tageweise geschickt und hat ca. 1000-2000 Zeilen). Es kommen in die Datenbank nur Werte die auch in der CSV-Datei vorliegen. Jetzt hätte ich einen anderen Weg eingeschlagen um die Array-Problematik aussen vor zu lassen. Über die SELECT-Abfrage. Das wäre natürlich optimal. Momentan verwende ich folgende Abfrage (diese liefert alle DS in bestimmten Zeitraum ohne Berücksichtigung, dass ein Sensor zum jeweiligen Zeitstempel fehlt PHP-Code:
Sollte dann in etwa so aussehen (gekürzt und vereinfacht). 2012-10-20 15:34:20 | Sensor1 | 1 | 7.38 2012-10-20 15:34:20 | Sensor2 | 2 | 13.79 2012-10-20 15:34:20 | Sensor3 | 5 | NULL 2012-10-20 15:34:20 | Sensor4 | 6 | 130.56 usw. Anmerkung: Der Sensor3 gibt es zwar in der Tabelle "Sensor" aber kein Eintrag in Tabelle "Messwert". Wäre dies möglich? Auch wenn dafür das Datenbankdesign geändert werden muss ist dies auch kein Problem. Mein kläglicher Versuch (ist murks aber ich bekomme schon mal eine richtige Anzahl an DS) PHP-Code:
lg Dietmar |
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:48:20 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.