Wie verwendet man 'AND / OR' in einer if else PHP-Anweisung? Wäre es:
1) UND
if ($status = 'clear' AND $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = '$id',
status = 'clear',
colour = '#3C0'
WHERE rent.id = $id");
}
2) ODER
if ($status = 'clear' OR $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = '$id',
status = 'clear',
colour = '#3C0'
WHERE rent.id = $id");
}
php
if-statement
Methusalah
quelle
quelle
$items_list = array(2,177);
$rules_list = array( '[(13 OR 3 OR 2 )]', '[(54 OR 77 ) AND 17 AND 59 AND 36 ] OR [(2 AND 36 )]', '[(2 OR 3 OR 13 ) AND 30 ]', '[(2 )] OR [(13 OR 4 ) AND (17 )]', '[(2 )] OR [(13 OR 3 ) AND 17 ]', '[(2 AND 30 ) OR (3 AND 30 )]', );
// Berechne das Bool-Ergebnis jeder Regel mit dem bereitgestellten Item-Array`Antworten:
Ja. Die Antwort ist ja.
http://www.php.net/manual/en/language.operators.logical.php
Zwei Dinge:
&&
und||
anstelle vonand
undor
, aber sie arbeiten gleich (vorrangig).$status = 'clear'
sollte wohl sein$status == 'clear'
.=
ist Zuordnung,==
ist Vergleich.quelle
===
dient es dem Typ + Wert-Vergleich. Zukünftig wird PHP auch beinhalten,====
zu überprüfen, ob die Klassen von demselben Programmierer geschrieben wurden,=====
um sicherzustellen, dass sie am selben Tag geschrieben wurden, und======
um sicherzustellen, dass der Programmierer zu der Zeit Hosen trug.=============
, um sicherzustellen, dass sich die Projektspezifikation seit dem Schreiben des Codes nicht geändert hat.FALSE
!=====
wenn ich sicherstellen möchte, dass der Programmierer keine Hosen trägt?Ein bisschen spät, aber egal ...
die Frage ist "Wie benutzt man ...?" Die kurze Antwort lautet: Sie machen es richtig
Die andere Frage wäre "Wann benutzt du es?"
Ich benutze
&&
anstelle vonAND
und||
anstelle vonOR
.$a = 1 $b = 3
Jetzt,
if ($a == 1 && $b == 1) { TRUE } else { FALSE }
In diesem Fall ist das Ergebnis "FALSE", da B nicht 1 ist. Was wäre, wenn
if ($a == 1 || $b == 1) { TRUE } else { FALSE }
Dies gibt "TRUE" zurück, auch wenn B immer noch nicht der von uns angeforderte Wert ist. Es gibt eine andere Möglichkeit, TRUE ohne die Verwendung von OR / || zurückzugeben und das wäre XOR
if ($a == 1 xor $b == 1) { TRUE } else { FALSE }
In diesem Fall muss nur eine unserer Variablen wahr sein, ABER NICHT BEIDE, wenn beide WAHR sind, wäre das Ergebnis FALSCH.
Ich hoffe das hilft...
mehr unter:
http://www.php.net/manual/de/language.operators.logical.php
quelle
Es gibt einige Scherze und irreführende Kommentare, sogar teilweise falsche Informationen in den Antworten hier. Ich möchte versuchen, sie zu verbessern:
Erstens , wie einige betont haben, haben Sie einen Fehler in Ihrem Code, der sich auf die Frage bezieht:
if ($status = 'clear' AND $pRent == 0)
sollte sein (beachten Sie die
==
statt=
im ersten Teil):if ($status == 'clear' AND $pRent == 0)
was in diesem Fall funktional äquivalent zu ist
if ($status == 'clear' && $pRent == 0)
Zweitens ist zu beachten, dass diese Operatoren (
and or && ||
) Kurzschlussoperatoren sind. Das heißt, wenn die Antwort mit Sicherheit aus dem ersten Ausdruck bestimmt werden kann, wird der zweite niemals ausgewertet. Auch dies spielt für Ihre obige debuggte Zeile keine Rolle, aber es ist äußerst wichtig, wenn Sie diese Operatoren mit Zuweisungen kombinieren, weilDrittens ist der wahre Unterschied zwischen
and or
und&& ||
die Priorität des Operators . Insbesondere ist es wichtig, dass sie&& ||
eine höhere Priorität als die Zuweisungsoperatoren (= += -= *= **= /= .= %= &= |= ^= <<= >>=
) haben, während sieand or
eine niedrigere Priorität als die Zuweisungsoperatoren haben. In einer Aussage, die die Verwendung von Zuweisung und logischer Bewertung kombiniert, ist es daher wichtig, welche Sie wählen.Geänderte Beispiele von der PHP-Seite zu logischen Operatoren :
$e = false || true;
wird
true
diesen Wert auswerten und ihm zuweisen$e
, da er||
eine höhere Operatorpriorität als=
hat und daher im Wesentlichen wie folgt ausgewertet wird :$e = (false || true);
jedoch
$e = false or true;
wird zuweisen
false
zu$e
(und dann die Durchführungor
Betrieb und zu bewerten ,true
da)=
als höheren Operator Vorrang hator
, im wesentlichen wie diese Auswertung:($e = false) or true;
Die Tatsache, dass diese Mehrdeutigkeit sogar besteht, lässt viele Programmierer einfach immer verwenden
&& ||
und dann funktioniert alles klar, wie man es in einer Sprache wie C erwarten würde, dh. zuerst logische Operationen, dann Zuordnung.Einige Sprachen wie Perl verwenden diese Art von Konstrukt häufig in einem ähnlichen Format:
$connection = database_connect($parameters) or die("Unable to connect to DB.");
Dies würde theoretisch die Datenbankverbindung zuweisen
$connection
, oder wenn dies fehlschlägt (und wir gehen hier davon aus, dass die Funktion etwas zurückgibt, dasfalse
in diesem Fall bewertet wird), wird das Skript mit einer Fehlermeldung beendet. Wenn aufgrund eines Kurzschlusses die Datenbankverbindung erfolgreich ist,die()
wird die nie ausgewertet.Einige Sprachen, die dieses Konstrukt direkt zulassen, verbieten Zuweisungen in bedingten / logischen Anweisungen (wie Python), um die Amiguität umgekehrt zu entfernen.
PHP hat beides zugelassen, sodass Sie nur einmal etwas über Ihre beiden Optionen lernen und dann codieren müssen, wie Sie möchten, aber hoffentlich sind Sie auf die eine oder andere Weise konsistent.
Wenn Sie Zweifel haben, setzen Sie einfach einen zusätzlichen Satz Klammern ein, um alle Unklarheiten zu beseitigen. Diese werden immer gleich sein:
$e = (false || true); $e = (false or true);
Mit all diesem Wissen bewaffnet, bevorzuge ich die Verwendung,
and or
weil ich der Meinung bin, dass dadurch der Code besser lesbar wird. Ich habe nur die Regel, Zuordnungen nicht mit logischen Auswertungen zu kombinieren. Aber an diesem Punkt ist es nur eine Präferenz, und Konsistenz ist hier viel wichtiger als die Seite, für die Sie sich entscheiden.quelle
Sie haben hier 2 Probleme.
verwenden
==
zum Vergleich. Sie haben verwendet,=
was für die Zuordnung ist.Verwenden Sie
&&
für "und" und||
für "oder".and
undor
wird funktionieren, aber sie sind unkonventionell.quelle
if ($status = 'clear' OR $pRent == 0) {
. In diesem Fall ist die zweite Bedingung nicht erreichbar. Es muss ein Fehler sein.OR
.UND ist
&&
und ODER ist||
wie in C.quelle
AND
undOR
sind nur syntaktischer Zucker für&&
und||
, wie in JavaScript, oder anderen Syntaxsprachen im C-Stil.Es erscheint
AND
undOR
hat eine geringere Priorität als die Entsprechungen im C-Stil.quelle
für UND du verwendest
if ($status = 'clear' && $pRent == 0) { mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id"); }
für ODER verwenden Sie
if ($status = 'clear' || $pRent == 0) { mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id"); }
quelle
Ich glaube, ich habe hier ein bisschen Verwirrung. :) Aber anscheinend hat sonst niemand ..
Fragen Sie, welche in diesem Szenario verwendet werden soll? Wenn ja, dann und ist die richtige Antwort .
Wenn Sie fragen, wie die Bediener arbeiten, dann
In PHP sowohl AND, && und OR, || wird auf die gleiche Weise funktionieren. Wenn Sie neu in der Programmierung sind und PHP eine Ihrer ersten Sprachen ist, empfehle ich die Verwendung von UND und ODER, da dies die Lesbarkeit erhöht und Verwirrung beim erneuten Überprüfen verringert. Wenn Sie jedoch bereits mit anderen Sprachen vertraut sind, haben Sie möglicherweise bereits die && und || vertraut gemacht Betreiber.
quelle
$e = false || true;
vs$e = false or true;
. Der erste wird als wahr bewertet, der zweite als falsch.<?php $val1 = rand(1,4); $val2=rand(1,4); if ($pars[$last0] == "reviews" && $pars[$last] > 0) { echo widget("Bootstrap Theme - Member Profile - Read Review",'',$w[website_id],$w); } else { ?> <div class="w100"> <div style="background:transparent!important;" class="w100 well" id="postreview"> <?php $_GET[user_id] = $user[user_id]; $_GET[member_id] = $_COOKIE[userid]; $_GET[subaction] = "savereview"; $_GET[ip] = $_SERVER[REMOTE_ADDR]; $_GET[httpr] = $_ENV[requesturl]; echo form("member_review","",$w[website_id],$w);?> </div></div>
Ich habe das 'else' durch '&&' ersetzt, damit beide platziert werden ... argh
quelle
"UND" funktioniert in meinem PHP-Code nicht.
Serverversion vielleicht?
"&&" funktioniert gut.
quelle
&&
für AND.