Mailinglisten-Archive |
Christian Knorr wrote:
> Hallo zusammen,
Hallo Christian,
du sagtest zwar, dass Problem sei gelöst, aber ich will dich hier mal
vor zukünfitigen Problemen schützen ;-).
>
> [CODE]
> if ( $_POST["cancel_to_product"] or $ProduktMenu == "1" ) {
Dies funktioniert. Aber nicht aus dem Grund aus dem du denkst, dass es
funktioniert (ansonsten hättest du das anders geschrieben).
Das ganze wird vielleicht deutlich, wenn ich ein paar optionale Klammern
setze, die deine Anweisung nicht (!) verändern:
if (($_POST["cancel_to_product"] or $ProduktMenu) == "1" )
hättest du das gedacht? Ich schätze mal eher du dachtest, dass deine
Anweisung equivalent mit dieser hier ist:
if ( $_POST["cancel_to_product"] or ($ProduktMenu == "1"))
Der Fehler fängt dann an dich ans debuggen zu bringen, wenn du auf
einmal sowas hast:
if ( $_POST["cancel_to_product"] or $ProduktMenu == "0" )
Denn in dem Fall würde die if-Bedingung zum Beispiel nie wahr werden,
wenn ($_POST["cancel_to_product"] ==true) wahr ist.
Bei php's ||-Zeichen ist das etwas anders:
if ( $_POST["cancel_to_product"] || $ProduktMenu == "1" )
ist tatsächlich genau wie
if ( $_POST["cancel_to_product"] or ($ProduktMenu == "1"))
das liegt daran, da das || eine höhere Priorität hat, als das or und
auch eine höhere Priorität als das ==. Wie bei Punkt vor Strich, wo
zuerst die Multiplikation errechnet wird (z.B.: in 5+3*4) wird das ||
vor dem == errechnet.
--> Entweder du machst dir bewusst, wie die Operatorreihenfolge in php
aussieht, oder du setzt Klammern. Ansonsten entwickelt deine Anwendung
mit der Zeit interessante neue "Features" :-D.
> Danke schonmal, Chris.....
Yannik
php::bar PHP Wiki - Listenarchive