Alexander Foken: (PHP) Falsche Bedingung in Schleife

Beitrag lesen

Moin Moin!

Ich kenne PHP ja nicht so gut, aber da es viel von Perl kopiert hat, schreib ich einfach mal meine Perl-Lösung hin. Der Trick ist, im grep eine Funktion aufzurufen, die prüft, ob Du die Zeile haben willst oder nicht.

sub datum_bis($$) # $rohzeile, $datum_MMDD
{
  my ($line,$referenz)=@_;
  $line=~/^\d{2}.\d{2}./ or return 0; # wenn das Pattern nicht paßt, ist die Zeile ohnehin Schrott.
  return "$2$1" <= $referenz; # Monat vor den Tag gezogen macht den Vergleich leichter.
}

open FILE,"<datei.txt" or die "Oops: $!";
my @lines=grep { datum_bis($_,'0331') } <FILE>;
close FILE;

Übrigens: Was ist mit Jahreswechsln ? Ich sehe in Deinen Daten keine Jahreszahl.

Und noch ein "Übrigens": Wenn Du Dein Datum in der Reihenfolge Jahr - Monat - Tag ablegst, wird die Sortierung wesentlich einfacher.

Alexander