Dies ist vielleicht die Art, wie mein Server eingerichtet ist, aber ich hämmere meinen Kopf gegen die Wand. Was ich versuche zu tun, ist, dass, wenn $action
keinen Wert hat oder einen Wert hat, der nicht "add" oder "delete" ist, als einen Fehler hat, sonst führe das Skript weiter aus. Allerdings bekomme ich einen Fehler, egal was $action
ist.
$action
wird richtig gesetzt und wenn etwas wie if($action =="add")
läuft, funktioniert es. Dies ist auf meinem lokalen Host, könnte also ein Einstellungs-Problem sein.
Ihre Logik ist etwas aus. Der zweite ||
sollte &&
sein:
Sie können sehen, warum Ihre ursprüngliche Zeile fehlschlägt, indem Sie einen Beispielwert ausprobieren. Sagen wir, $action
ist "delete"
. So verkleinert sich die Bedingung Schritt für Schritt:
Hoppla! Die Bedingung war erfolgreich und druckte "Fehler", aber es sollte fehlschlagen. In der Tat, wenn Sie darüber nachdenken, egal was der Wert von $action
ist, wird einer der beiden !=
-Tests wahr zurückgeben. Wechseln Sie die ||
zu &&
und die vorletzte Zeile wird zu if (true && false)
, was sich richtig auf if (false)
reduziert.
Es gibt eine Möglichkeit, ||
zu benutzen und die Testarbeit zu erledigen. Sie müssen alles andere negieren, indem Sie das Gesetz von De Morgan verwenden, d. H .:
Sie können das im Englischen als "Wenn Aktion nicht ist (entweder hinzufügen oder entfernen), dann".
Egal was $ Aktion ist, es wird immer entweder nicht "add" oder nicht "delete" sein, weshalb die if Bedingung immer besteht. Was Sie wollen, ist die Verwendung von & amp; & amp; anstelle von ||:
%Vor%für zukünftige Referenz, können Sie schnell eine Wahrheitstabelle erstellen, um zu überprüfen, ob es die Art und Weise bewertet, die Sie wollen ... es ist irgendwie wie Sudoku.
(!isset($action)) && ($action !="add" && $action !="delete"))
Beispiel:
column 1 is issetaction, column 2 and 3 evaluates !="add","delete" respectively
if ($ a = add) T & amp; & amp; (F & amp; & amp; T) = & gt; T & amp; & amp; F = & gt; FALSCH
if ($ a = löschen) T & amp; & amp; (T & amp; & amp; F) = & gt; T & amp; & amp; F = & gt; FALSCH
if ($ a = nichts) T & amp; & amp; (T & amp; & amp; T) = & gt; T & amp; & amp; T = & gt; WAHR
Ich denke, das ist der beste und einfachste Weg, es zu tun
keine Antwort, sondern nur wegen der Formatierung des Codes
%Vor% note exit;
statement nach header (). das ist wichtig. header () beendet die Skriptausführung nicht
Tags und Links php if-statement conditional-operator