Moin!
Es funktiniert natürlich wie folgt:
Nein, der Code ist fehlerhaft!
if ($plz_array[entry_country_id] == 81 AND (int)$plz_array[entry_postcode] >= "99997" AND (int)$plz_array[entry_postcode] <= "99999" )
Durch das explizite (int) provozierst du die Wandlung des Strings in eine Zahl. Dabei geht dir die führende Null verloren. Dann erfolgt der Vergleich mit einem String.
Zwei Möglichkeiten bestehen: Entweder wird die Zahl zurück zum String gewandelt, oder der String zur Zahl. Beide Ergebnisse führen nicht zum Ziel.
Nur mal angenommen, es geht um die Postleitzahl "09999". Die wird als Zahl zu 9999, und nur, weil deine Postleitzahlendefinition so "eng" ist (fünfte Ziffer von 7 bis 9), kann die Zahl nicht in den gewünschten Bereich fallen.
Hättest du einen etwas weiter gefaßten Bereich gewählt, wie z.B. "zwischen 99800 und 99999", wäre beim Stringvergleich "9999" innerhalb des Bereichs.
Problem gelöst..
Noch nicht, weil dir die Randbedingungen Korrektheit vortäuschen, aber das Grundproblem immer noch existiert: Postleitzahlen sind keine Zahlen und sollen auch nicht als solche behandelt werden.
- Sven Rautenberg
"Love your nation - respect the others."