Tach!
Zusätzlich zu den bisherigen Antworten: Du solltest dir vielleicht das Umkopieren sparen:
Finde ich nicht. Den Array-Zugriff
$_POST['tagesPreis']
zu wiederholen ist langatmig und fehleranfällig. Wenn sich der Array-Schlüssel mal ändern sollte, oder wenn man den Code später über den Schlüssel verallgmeinern möchte, dann müssen sämtliche Zugriffe geändert werden.
Man kann da auch mit YAGNI argumentieren.
Speichert man dagegen das Ergebnis direkt in einer Variablen, gibt es nur einen Punkt mit Änderungsbedarf.
Wenn man refakturiert, muss man zwangsläufig aufmerksam sein, auch wenn man sich das Leben (angeblich) vereinfacht hat. Wer sagt denn, dass sich nur der Feldbezeichner ändert und nicht stattdessen der Variablenname, oder gar beides? Ich halte das für kein allgemeingültiges Argument.
Außerdem sind PHPs assoziative Arrayzugriffe wegen des String-typisierten Schlüssels schon für sich anfällig für Tippfehler. Und das sind wirklich bösartige Fehler, weil PHP dann nicht sofort mit einem lauten Krach darauf aufmerksam macht, sondern versucht das "Beste" aus der Situation zu machen, so kann der Fehler lange unbemerkt bleiben und durch die Anwendung propagieren. Gut gemeint ist eben nicht gut gemacht.
Das passiert bei falsch geschriebenen (und damit nicht existenten) Variablen ebenso. In beiden Fällen gibt es nur eine Notice-Meldung. Und diese sind unterdrückt, wenn man sie nicht explizit freikonfiguriert.
"Das "beste" aus dieser Situation" zu machen, ist schlicht die Rückgabe von null. Was du vermutlich meinst, ist das Weglassen der Anführungszeichen. Denn dann wird gutmütigerweise angenommen, man meine gar keine Konstante, wenn eine solche nicht existiert, sondern einen String.
Außerdem sollte man tunlichst vermeiden PHPs
$_POST
-Array selber zu beschreiben. Der Schein trügt, dass es nur einen gerinfügigen Unterschied mache, ob ein$_POST
-Element den leeren String enthält oder gar nicht gesetzt ist. Das zeigt dieser Fall sogar besonders deutlich: Array-Element nicht gesetzt bedeutet, dass die Checkbox nicht ausgewählt wurde. Array-Element gesetzt bedeutet, dass die Checkbox ausgewählt wurde, und zwar unabhängig vom Wert, der drin steht. Gegenteiliger könnte die Semantik kaum sein.
Dem kann man mit !empty() statt isset() abhelfen.
dedlfix.