PHP-Umsetzung: "die Müllabfuhr kommt am..."
Hi Newsgroup,
jeder kennt das: Die Müllabfuhr kommt eigentlich alle paar Wochen,
aber es gibt Ausnahmen, wie Feiertage & Co.
Ich habe eine Auflistung aller Tage (d.m.Y.), an denen die Müllabfuhr
kommt. Zusätzlich habe ich eine Liste, an denen die Müllabfuhr
zusätzlich kommt, aber keine, an der sie nicht kommt. Die Zeitspanne
der Daten geht vom 01.01.2007 bis 31.12.2007.
Ich hätte jetzt gerne eine Auflistung, die mir ansagt:
"Die Müllabfuhr kommt jeden Montag, außer an den Tagen ..."
Meine Vorgehensweise:
1. Ich erzeuge ein Multi-Array mit dem Wochentagnamen als Schlüssel
und dem Daten als Wert, an denen die Müllabfuhr kommt.
Die Häufigkeit könnte dann so aussehen (52 Wochen):
Montag => 44
Dienstag => 2
Mittwoch => 2
Samstag => 4
Man könnte also hier schon sagen, dass die Müllabfuhr an jedem
Montag kommt und halt an den Zusatztagen, aber das "außer" fehlt
ja noch.
3. Ich berechne alle Tage, die es in der Zeitspanne gibt.
4. Ich ziehe die Liste (bzw. das Array), an denen der Müllwagen
kommt, von der Liste aller Tage ab (array_diff) und erhalte
eine Liste der Tage, an denen die Müllabfuhr nicht kommt.
Eigentlich müsste ich ja nur die Montage ausrechnen...
Am Besten übernehme ich den Tag der höchsten Häufigkeit, dann
muss ich nicht alle Tage berechnen.
Aber was ist, wenn das aus irgendeinem Grund anders verteilt
werden sollte (auch wenn es unrealistisch ist):
Montag => 22
Dienstag => 2
Mittwoch => 2
Samstag => 22
Ich sollte also doch lieber von allen Tagen ausgehen.
Das Script funktioniert zwar ... aber welche Herangehensweisen
gibt es noch?
Grüße
Lars-Daniel
Re: PHP-Umsetzung: "die Müllabfuhr kommt am..."
Lars-Daniel Weber wrote:
> jeder kennt das: Die Müllabfuhr kommt eigentlich alle paar Wochen,
Hier jede. :-) Eine Woche Pappe+Papier, die andere normale Mülltonne
und mittendrin auch noch der Gelbe Sack (nix chinesisches ;-) ).
> aber es gibt Ausnahmen, wie Feiertage & Co.
Klar... Welche sind das neben Feiertagen denn noch?
> Ich habe eine Auflistung aller Tage (d.m.Y.), an denen die Müllabfuhr
> kommt.
Wo hast Du das und in welcher Form? Wie ist die Auflistung entstanden?
Ich hoffe nicht durch manuelle Eingabe?
> Zusätzlich habe ich eine Liste, an denen die Müllabfuhr
> zusätzlich kommt, aber keine, an der sie nicht kommt. Die Zeitspanne
> der Daten geht vom 01.01.2007 bis 31.12.2007.
Wo hast Du das und in welcher Form?
> Ich hätte jetzt gerne eine Auflistung, die mir ansagt:
> "Die Müllabfuhr kommt jeden Montag, außer an den Tagen ..."
Also muß Du das einfach mit evtl. Feiertagen abgleichen.
> Meine Vorgehensweise:
> 1. Ich erzeuge ein Multi-Array mit dem Wochentagnamen als Schlüssel
> und dem Daten als Wert, an denen die Müllabfuhr kommt.
>
> Die Häufigkeit könnte dann so aussehen (52 Wochen):
> Montag => 44
> Dienstag => 2
> Mittwoch => 2
> Samstag => 4
>
> Man könnte also hier schon sagen, dass die Müllabfuhr an jedem
> Montag kommt und halt an den Zusatztagen, aber das "außer" fehlt
> ja noch.
Bahnhof... Wo willst Du in der Liste ein "Außer" unterbringen? Was
verstehst Du unter "Außer"?
> 3. Ich berechne alle Tage, die es in der Zeitspanne gibt.
Du hast 2. vergessen! Und warum berechnest Du alle Tage in einer
Zeitspanne? Die stehen doch schon fest.
> 4. Ich ziehe die Liste (bzw. das Array), an denen der Müllwagen
> kommt, von der Liste aller Tage ab (array_diff) und erhalte
> eine Liste der Tage, an denen die Müllabfuhr nicht kommt.
Fein...
> Aber was ist, wenn das aus irgendeinem Grund anders verteilt
> werden sollte (auch wenn es unrealistisch ist):
Was willst Du anders verteilen?
Das ist sehr undurchsichtig was Du schreibst. Sag einfach was Du willst
und was nicht geht und welcher Code genutzt wird.
> Das Script funktioniert zwar ... aber welche Herangehensweisen
> gibt es noch?
Welches Ergebnis erwartest Du in welcher Form? Nur so wie oben angeführt
fürs ganze Jahr oder monatlich oder wie?
Außerdem hast Du einige wichtige Infos nicht genannt.
Auf was bezieht sich der 2-Wochen Rythmus. Bei uns ists z.B. so das die
Müllabfuhr wirklich zeitgstens 2 Wochen nach Ihren letzten Erscheinen
kommt. In der Nachbarstadt (anderer Regierungsbezik) kommen die z.B.
immer Mittwochs auch wenn der vorige Termin auf Grund eines Feiertags
nach hinten gerückt wurde. Da wo meine Freunding wohnt ist wieder
anders. Dort verschiebt sich der Tag der Müllabfuhr immer dann nach vorn
wenn mehr als ein Feiertag ab dem eigentlichen Abholtag (Donnerstag)
kommt, sonst nach hinten.
An welchen Tagen kommt die Müllabfuhr zusätzlich? Gibts hier nicht.
Ulf
--
_,
_(_p> Ulf [Kado] Kadner
\<_)
^^
Re: PHP-Umsetzung: "die Müllabfuhrkommt am..."
Lars-Daniel Weber wrote:
> Hi Newsgroup,
>
> jeder kennt das: Die Müllabfuhr kommt eigentlich alle paar Wochen,
> aber es gibt Ausnahmen, wie Feiertage & Co.
>
> Ich habe eine Auflistung aller Tage (d.m.Y.), an denen die Müllabfuhr
> kommt. Zusätzlich habe ich eine Liste, an denen die Müllabfuhr
> zusätzlich kommt, aber keine, an der sie nicht kommt. Die Zeitspanne
> der Daten geht vom 01.01.2007 bis 31.12.2007.
>
> Ich hätte jetzt gerne eine Auflistung, die mir ansagt:
> "Die Müllabfuhr kommt jeden Montag, außer an den Tagen ..."
>
> Meine Vorgehensweise:
> 1. Ich erzeuge ein Multi-Array mit dem Wochentagnamen als Schlüssel
> und dem Daten als Wert, an denen die Müllabfuhr kommt.
>
> Die Häufigkeit könnte dann so aussehen (52 Wochen):
> Montag => 44
> Dienstag => 2
> Mittwoch => 2
> Samstag => 4
>
> Man könnte also hier schon sagen, dass die Müllabfuhr an jedem
> Montag kommt und halt an den Zusatztagen, aber das "außer" fehlt
> ja noch.
>
> 3. Ich berechne alle Tage, die es in der Zeitspanne gibt.
>
> 4. Ich ziehe die Liste (bzw. das Array), an denen der Müllwagen
> kommt, von der Liste aller Tage ab (array_diff) und erhalte
> eine Liste der Tage, an denen die Müllabfuhr nicht kommt.
>
> Eigentlich müsste ich ja nur die Montage ausrechnen...
> Am Besten übernehme ich den Tag der höchsten Häufigkeit, dann
> muss ich nicht alle Tage berechnen.
>
> Aber was ist, wenn das aus irgendeinem Grund anders verteilt
> werden sollte (auch wenn es unrealistisch ist):
>
> Montag => 22
> Dienstag => 2
> Mittwoch => 2
> Samstag => 22
>
> Ich sollte also doch lieber von allen Tagen ausgehen.
>
> Das Script funktioniert zwar ... aber welche Herangehensweisen
> gibt es noch?
>
> Grüße
> Lars-Daniel
Also ich verstehe nicht, warum du es dir schwierig machst.
Das jeweilige Datum, wann die Müllabfuhr kommt hast du in einer Liste,
richtig?
Nun schreibst du einfach eine Funktion, die dieses Liste komplett
durchläuft, und dabei feststellt, welcher Wochentag zum Datum gehört - mit
getdate().
Wenn du nun herausfinden möchtest, an welchen Montagen die Müllabfuhr nicht
kommt, dann erweiterst du einfach die funktion dahingehend, das alle
Montage durchlaufen werden, und gleich mit getestet wird, ob für diesen
Montag ein ein Datensatz vorhanden ist. Wenn nicht merkst du dir diesen
Montag.
Durchlaufen der jeweils gesuchten Tage ist ja recht einfach, weil Tage,
wochen und Montate ja feste Werte sind, und so leicht inkrementiert werden
können.
Re: PHP-Umsetzung: "die Müllabfuhr kommt am..."
Ulf Kadner wrote:
>> jeder kennt das: Die Müllabfuhr kommt eigentlich alle paar Wochen,
>
> Hier jede. :-) Eine Woche Pappe+Papier, die andere normale Mülltonne
> und mittendrin auch noch der Gelbe Sack (nix chinesisches ;-) ).
Ihr habt noch Gelbe Säcke? Oh, die vermisse ich. Da konnte man auch
andere Sachen drin lagern :-)
>> aber es gibt Ausnahmen, wie Feiertage & Co.
>
> Klar... Welche sind das neben Feiertagen denn noch?
Straßenfest, geplante Straßenbauarbeiten etc.
In einer Großstadt wird sowas schon Wochen voraus geplant.
> Wo hast Du das und in welcher Form?
Zwei einfache CSV-Dateien mit den Daten untereinander. Das Einlesen
der Datei in ein Array etc. ist kein Problem. Beispiel:
03.01.2007
10.01.2007
17.01.2007
[...]
>> Man könnte also hier schon sagen, dass die Müllabfuhr an jedem
>> Montag kommt und halt an den Zusatztagen, aber das "außer" fehlt
>> ja noch.
>
> Bahnhof... Wo willst Du in der Liste ein "Außer" unterbringen? Was
> verstehst Du unter "Außer"?
Beispiel:
"Die Müllabfuhr kommt jeden Montag, Mittwoch, Freitag, außer am
03.04.2007, am 17.05.2007..."
> Und warum berechnest Du alle Tage in einer Zeitspanne? Die stehen
> doch schon fest.
Um die ausfallenden Tage ermitteln zu können, die ich nicht habe.
> Auf was bezieht sich der 2-Wochen Rythmus. Bei uns ists z.B. so das
> die Müllabfuhr wirklich zeitgstens 2 Wochen nach Ihren letzten
> Erscheinen kommt. In der Nachbarstadt (anderer Regierungsbezik)
> kommen die z.B. immer Mittwochs auch wenn der vorige Termin auf Grund
> eines Feiertags nach hinten gerückt wurde. Da wo meine Freunding
> wohnt ist wieder anders. Dort verschiebt sich der Tag der Müllabfuhr
> immer dann nach vorn wenn mehr als ein Feiertag ab dem eigentlichen
> Abholtag (Donnerstag) kommt, sonst nach hinten.
Ich möchte den Rhythmus eingegebener Daten sowie deren Ausreißer
ermitteln
> An welchen Tagen kommt die Müllabfuhr zusätzlich? Gibts hier nicht.
Bei uns kommt sie an verschiedenen Tagen: vier Müllsorten, vier
verschiedene Wagen. Müllsorte ist mir bei dem Konzept egal.
Zusätzlich kommt dann noch der Schrott-Abholer alle paar Wochen.
Re: PHP-Umsetzung: "die Müllabfuhr kommt am..."
Samuel Suther wrote:
> Wenn du nun herausfinden möchtest, an welchen Montagen die Müllabfuhr
> nicht kommt, dann erweiterst du einfach die funktion dahingehend, das
> alle Montage durchlaufen werden, und gleich mit getestet wird, ob für
> diesen Montag ein ein Datensatz vorhanden ist. Wenn nicht merkst du
> dir diesen Montag.
Das ist ja das Problem: Sie kommt ja nicht nur am Montag :-)
Papier, Bio, Restmüll, Wertstoffe + Schrott.
> Durchlaufen der jeweils gesuchten Tage ist ja recht einfach, weil
> Tage, wochen und Montate ja feste Werte sind, und so leicht
> inkrementiert werden können.
Ich habe jetzt eine flexible Lösung programmiert, sie sehr gut
funktioniert. Ist auch auf andere Fälle übertragbar.