dedlfix: if/else

Beitrag lesen

Tach!

if ($_POST["transportauftrag_bis"] == "") {

bei sowas verwende ich gerne empty():

empty() hat auch die Eigenschaft, keine Meldung zu erzeugen, wenn der Wert im Array nicht vorhanden ist. Andererseits ist ein Leerstring zwar leer, aber ein String mit Leerzeichen ist es nicht. empty() hätte hier also nicht allein geholfen.

Ein empty(trim($array['feld'])) ist zwar mittlerweile ausführbar (früher wollte empty() lediglich Variablen und keine Ausdrücke als Parameter), hat aber wieder das Problem, dass für das trim() der Wert $array['feld'] ermittelt werden muss, und das zur bekannten Notice bei Nichtvorhandensein führt. empty() ist keine normale Funktion sondern ein Sprachkonstrukt, und PHP löst hier nicht den übergebenen Parameter auf, wie es das bei normalen Funktionen tun würde. Allerdings kann empty() auch nicht solche verschachtelten Parameter selbst auswerten, weswegen das trim() unabhängig von empty()s Eigenheiten zuerst aufgelöst wird und es gegebenenfalls dabei zur Notice kommt.

Man kann also zwar hier mit empty() arbeiten, muss aber selbst das Vorhandesein des Eintrags in $_POST prüfen und darauf ein trim() ausführen, bevor man empty() bemüht.

dedlfix.