Hoe gebruik je ‘en / of’ in een PHP-instructie als anders anders? Zou het zijn:
1) en
if ($status = 'clear' AND $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = '$id',
status = 'clear',
colour = '#3C0'
WHERE rent.id = $id");
}
2) of
if ($status = 'clear' OR $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = '$id',
status = 'clear',
colour = '#3C0'
WHERE rent.id = $id");
}
Antwoord 1, Autoriteit 100%
Ja. Het antwoord is ja.
http://www.php.net/manual/en/language.operators.logical.php
TWEE DINGEN:
- Veel programmeurs geven de voorkeur aan
&&
en||
in plaats vanAND
enOR
, maar ze werken hetzelfde (veilig voor precedentie). $status = 'clear'
MOET WAARSCHIJNLIJK$status == 'clear'
.=
is opdracht,==
is vergelijking.
Antwoord 2, Autoriteit 14%
Er is enkele grapjes en misleidende opmerkingen, zelfs gedeeltelijk onjuiste informatie in de antwoorden hier. Ik wil proberen ze te verbeteren:
First , zoals sommigen hebben aangegeven, hebt u een bug in uw code die betrekking heeft op de vraag:
if ($status = 'clear' AND $pRent == 0)
zou moeten zijn (let op de ==
in plaats van =
in het eerste deel):
if ($status == 'clear' AND $pRent == 0)
wat in dit gevalfunctioneel equivalent is aan
if ($status == 'clear' && $pRent == 0)
Ten tweede, houd er rekening mee dat deze operators (and or && ||
) kortsluitoperators zijn. Dat betekent dat als het antwoord met zekerheid kan worden bepaald uit de eerste uitdrukking, de tweede nooit wordt geëvalueerd. Nogmaals, dit maakt niet uit voor je debug-regel hierboven, maar het is uiterst belangrijk wanneer je deze operators combineert met toewijzingen, omdat
Ten derde, het echte verschil tussen and or
en && ||
is hun operatorvoorrang. Het is met name van belang dat && ||
hebben een hogere prioriteit dan de toewijzingsoperatoren (= += -= *= **= /= .= %= &= |= ^= <<= >>=
) terwijl and or
een lagere prioriteit hebben dan de toewijzingsoperators. Dus in een statement dat het gebruik van opdracht en logische evaluatie combineert, maakt het uit welke je kiest.
Gewijzigde voorbeelden van PHP’s pagina over logische operatoren:
$e = false || true;
zal evalueren tot true
en die waarde toewijzen aan $e
, omdat ||
een hogere operatorprioriteit heeft dan =
, en daarom evalueert het in wezen als volgt:
$e = (false || true);
Echter
$e = false or true;
Wijs false
toe aan $e
(en voer vervolgens de bediening OR
uit en evalueert u true
) omdat =
heeft een hogere operator voorrang dan OR
, in wezen evalueert als volgt:
($e = false) or true;
Het feit dat deze dubbelzinnigheid zelfs bestaat, maakt veel programmeurs gewoon altijd gebruik && ||
en dan werkt alles duidelijk zoals men zou verwachten in een taal zoals C, dat wil zeggen. Logische operaties eerst, dan toewijzing.
Sommige talen zoals Perl gebruiken dit soort construct vaak in een formaat vergelijkbaar met dit:
$connection = database_connect($parameters) or die("Unable to connect to DB.");
Dit wijst in the -oretisch de database-verbinding toe aan $connection
, of als dat mislukt (en we gaan ervan uit dat de functie iets zou retourneren dat evalueert op false
IN Case), het zal het script beëindigen met een foutmelding. Vanwege kortsluiting, als de database-verbinding slaagt, wordt de die()
nooit geëvalueerd.
Enkele talen waarmee deze Construct Right-out forbid-opdrachten in voorwaardelijke / logische verklaringen (zoals Python) toestaan om de ambiguïteit andersom te verwijderen.
PHP ging met het toestaan van beide, dus je hoeft alleen maar eens over je twee opties te leren en vervolgens codeer te weten hoe je wilt, maar hopelijk ben je een of andere manier consistent.
Weer in twijfel, gewoon een extra set van haakjes gooien, die alle ambiguïteit verwijdert. Deze zullen altijd hetzelfde zijn:
$e = (false || true);
$e = (false or true);
Gewapend met al die kennis, gebruik ik liever and or
omdat ik vind dat het de code leesbaarder maakt. Ik heb alleen een regel om opdrachten niet te combineren met logische evaluaties. Maar op dat moment is het gewoon een voorkeur, en consistentie is hier veel belangrijker dan welke kant je kiest.
Antwoord 3, autoriteit 13%
Een beetje laat, maar maakt niet uit…
de vraag is “Hoe gebruik je…?” kort antwoord is dat je het goed doet
De andere vraag zou zijn: “Wanneer gebruik je het?”
Ik gebruik &&
in plaats van AND
en ||
in plaats van OR
.
$a = 1
$b = 3
Nu,
if ($a == 1 && $b == 1) { TRUE } else { FALSE }
in dit geval is het resultaat “FALSE” omdat B niet 1 is, wat nu als
if ($a == 1 || $b == 1) { TRUE } else { FALSE }
Dit zal “TRUE” retourneren, zelfs als B nog steeds niet de waarde heeft waar we om vragen, is er een andere manier om TRUE te retourneren zonder het gebruik van OR / || en dat zou XOR zijn
if ($a == 1 xor $b == 1) { TRUE } else { FALSE }
in dit geval hoeven we maar één van onze variabelen waar te hebben, MAAR NIET BEIDE als beide WAAR zijn, is het resultaat ONWAAR.
Ik hoop dat dit helpt…
meer in:
http://www.php.net/manual/en/language.operators .logische.php
Antwoord 4, autoriteit 6%
U hebt hier 2 problemen.
-
Gebruik
==
voor vergelijking. U hebt=
gebruikt die voor toewijzing is. -
Gebruik
&&
voor “en” en||
voor “of”.AND
ENOR
Werkt, maar ze zijn onconventioneel.
Antwoord 5, Autoriteit 6%
en is &&
en of is ||
zoals in c.
Antwoord 6, Autoriteit 3%
AND
EN OR
zijn slechts syntactische suiker voor &&
en ||
, zoals in JavaScript , of andere C-stijl-syntaxis.
IT verschijnt AND
en OR
hebben lagere precedentie dan hun c-achtige equivalenten.
Antwoord 7
voor en u gebruikt
if ($status = 'clear' && $pRent == 0) {
mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id");
}
voor of u gebruikt
if ($status = 'clear' || $pRent == 0) {
mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id");
}
Antwoord 8
Ik denk dat ik hier een beetje verwarring heb. 🙂 maar lijkt niemand anders ..
vraagt u welke te gebruiken in dit scenario? Zo ja, dan en het juiste antwoord .
Als u vraagt naar hoe de exploitanten werken, dan
In php werken zowel AND, &&als OR, ||op dezelfde manier. Als je nieuw bent in programmeren en php is een van je eerste talen, raad ik aan om AND en OR te gebruiken, omdat het de leesbaarheid vergroot en verwarring vermindert wanneer je terugkomt. Maar als u al bekend bent met andere talen, bent u misschien al bekend met de && en || operators.
Antwoord 9
<?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>
ik heb ‘els’ vervangen door ‘&&’ dus beide worden geplaatst … argh
Antwoord 10
“AND” werkt niet in mijn PHP-code.
Serverversie misschien?
“&&” werkt prima.