met behulp van en / of in IF anders PHP-instructie

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 van ANDen OR, 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 oren && ||is hun operatorvoorrang. Het is met name van belang dat && ||hebben een hogere prioriteit dan de toewijzingsoperatoren (= += -= *= **= /= .= %= &= |= ^= <<= >>=) terwijl and oreen 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 trueen 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 falsetoe aan $e(en voer vervolgens de bediening ORuit 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 falseIN 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 oromdat 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 ANDen ||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.

  1. Gebruik ==voor vergelijking. U hebt =gebruikt die voor toewijzing is.

  2. Gebruik &&voor “en” en ||voor “of”. ANDEN ORWerkt, maar ze zijn onconventioneel.


Antwoord 5, Autoriteit 6%

en is &&en of is ||zoals in c.


Antwoord 6, Autoriteit 3%

ANDEN ORzijn slechts syntactische suiker voor &&en ||, zoals in JavaScript , of andere C-stijl-syntaxis.

IT verschijnt ANDen ORhebben 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.

Other episodes