Je možná zložitá logika v php. Podmienečné vyhlásenia. PHP trojitý operátor

  • 03.11.2019

Lekcia bude zahŕňať podmienené príkazy php: príkaz if a príkaz switch

Podmienené príkazy v php sú reprezentované tromi hlavnými konštruktmi:

  • operátor stavu ak,
  • prepínač operátora prepínač
  • a ternárny operátor.

Pozrime sa bližšie na každý z nich.

PHP príkaz if

Obr. 3.1. Skratka podmieneného príkazu IF


Ryža. 3.2. IF ELSE Podmienená syntax


Ryža. 3.3. Úplná syntax podmieneného príkazu IF elseif

Zhrnúť:

Úplná syntax:

if (podmienka) ( // ak je podmienka pravdivá operátor1; operátor2; ) elseif(podmienka) (operátor1; ... ) else ( // ak je podmienka nepravdivá operátor1; operátor2; )

  • Skrátená syntax môže neobsahujú časť konštruktu else a neobsahujú ďalšiu podmienku elseif
  • Namiesto funkčného slova elseif môžete napísať else if (samostatne)
  • V jednej konštrukcii if môže byť niekoľko elseif. Vykoná sa prvý výraz elseif, ktorý sa vyhodnotí ako TRUE.
  • Ak existuje alternatívna podmienka elseif, klauzula else musí byť posledná v syntaxi.

V podmienenom príkaze možno namiesto zložených zátvoriek použiť dvojbodku. V tomto prípade operátor končí servisným slovom endif

Ryža. 3.4. Podmienený príkaz If a Endif v php

Príklad:

if($x > $y): echo $x.“ je väčšie ako „.$y; elseif($x == $y): // nemožno zapísať oddelene pri použití ":" else if echo $x." sa rovná ".$y; else: echo $x." nie > a nie = ".$y; koniec Ak;

Dôležité: Pri použití dvojbodky namiesto zložených zátvoriek, elseif nemožno napísať dvoma slovami!

Logické operácie v podmienke

V podmienke if môžu byť v zátvorkách uvedené nasledujúce operácie:

Príklad: skontrolujte hodnotu číselnej premennej: ak je menšia alebo rovná 10, zobrazí sa správa "číslo menšie alebo rovné 10", inak zobrazte správu "číslo väčšie ako 10"


Riešenie:

$číslo=15; ak ($číslo<=10) { echo "число меньше или равно 10"; } else { echo "число больше 10"; }

Bloky php kódu môžu byť zlomené, zvážte príklad:

Príklad: Zobraziť html kód "a rovná sa 4" ak $a je skutočne 4


1 riešenie:
1 2 3 4

2 Riešenie:

1 2 3 A je 4

A je 4

php úloha 3_1: Výstupný farebný preklad z angličtiny do ruštiny, kontrola hodnoty premennej (v ktorej je farba priradená: $a="blue")


php úloha 3_2: Nájdite maximálne tri čísla

Porovnávacie operácie a pravidlo lži

V konštrukcii if v zátvorkách musí byť logický výraz alebo premenná, ktoré sa z hľadiska algebry logiky počítajú s návratom buď true alebo false

Tie. jedna premenná môže pôsobiť ako podmienka. Zvážte príklad:

1 2 3 4 $a = 1; if ($a) (echo $a;)

$a=1; if ($a) ( echo $a; )

V príklade bude prekladateľ jazyka php brať do úvahy premennú v zátvorkách pre pravidlo klamstva:

Pravidlo klamstva alebo čo sa považuje za nepravdu:

  • logické Nepravdivé
  • celá nula ( 0 )
  • skutočná nula ( 0.0 )
  • prázdny riadok a linka «0»
  • pole bez prvkov
  • objekt bez premenných
  • špeciálny typ NULOVÝ

V uvažovanom príklade sa teda premenná $a rovná jednej, respektíve podmienka bude pravdivá a príkaz echo $a; zobrazí hodnotu premennej.

php úloha 3_3: zadaná premenná s hodnotou reťazca. Ak sa a rovná názvu, potom výstup "Ahoj, meno!", ak je a prázdne, potom výstup "Ahoj cudzinec!"

Logické konštrukcie AND OR a NOT v podmienenom operátore

  1. Niekedy je potrebné zabezpečiť splnenie viacerých podmienok súčasne. Potom sa podmienky spoja logický operátor AND — && :
  2. $a=1; if ($a>0 || $a>1) ( echo "a > 0 alebo a > 1"; )

  3. Ak chcete označiť, že podmienka je nepravdivá, použite logický operátor NOT — ! :
  4. 1 2 3 4 $a = 1; ak (! ($a< 0 ) ) { echo "a не < 0" ; }

    $a=1; ak (!($a<0)) { echo "a не < 0"; }

Príkaz PHP switch

Príkaz switch alebo „switch“ nahrádza niekoľko po sebe idúcich konštruktov if. Pritom porovnáva jednu premennú s viacerými hodnotami. Toto je teda najpohodlnejší prostriedok na organizovanie multibranchingu.

Syntax:

1 2 3 4 5 6 7 8 9 10 switch ($variable ) ( case "value1" : statement1 ; break ; case "value2" : statement2 ; break ; case "value3" : statement3 ; break ; [ default : statement4 ; break ; ] )

switch($variable)( case "value1": statement1; break; case "value2": statement2; break; case "value3": statement3; break; )

  • Operátor môže kontrolovať reťazcové hodnoty (potom sú uvedené v úvodzovkách) aj číselné hodnoty (bez úvodzoviek).
  • Príkaz break v konštrukcii je povinný. Konštrukt opustí, ak je podmienka pravdivá a vykoná sa príkaz zodpovedajúci podmienke. Bez prestávky budú vykonané vyhlásenia všetkých prípadov bez ohľadu na ich pravdivosť.

Ryža. 3.5. Príkaz podmieneného prepnutia


Príklad: je uvedené pole s celými mužskými menami. Skontrolujte prvý prvok poľa a v závislosti od názvu vydajte pozdrav s krátkym názvom.


Riešenie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $names = pole ("Ivan" , "Peter" , "Semyon" ) ; switch ($names [ 0 ] ) ( case "Peter" : echo "Ahoj, Petya!" ; break ; case "Ivan" : echo "Ahoj, Vanya!" ; break ; case "Semyon" : echo "Ahoj, Vanya! " ; break ; predvolene : echo "Ahoj, $names!"; prestávka ; )

$names=array("Ivan","Peter","Semyon"); switch($names)( case "Peter": echo "Ahoj, Petya!"; break; case "Ivan": echo "Ahoj, Vanya!"; break; case "Semyon": echo "Ahoj, Vanya!"; break ; predvolené: echo "Ahoj, $names!"; prestávka; )

Úloha PHP 3_4:

  • Vytvorte premennú $day a dajte jej ľubovoľnú číselnú hodnotu
  • Na výstup frázy použite konštrukciu prepínača "Je pracovný deň" ak hodnota premennej $day spadá do rozsahu čísel od 1 do 5 (vrátane)
  • Vypíšte frázu "Je deň voľna" ak je hodnota $day 6 alebo 7
  • Vypíšte frázu "Neznámy deň" ak hodnota premennej $day nespadá do rozsahu čísel od 1 do 7 (vrátane)

Pridať kód:

1 2 3 4 5 6 7 8 9 10 11 12 ... prepínač (... ) ( prípad 1 : prípad 2 : ... ozvena "Je pracovný deň"; prestávka ; prípad 6 : ... predvolené : ... )

Switch(...)( prípad 1: prípad 2: ... echo „Je pracovný deň“; prestávka; prípad 6: ... predvolené: ... )

PHP trojitý operátor

Ternárny operátor, t.j. s tromi operandmi, má pomerne jednoduchú syntax, v ktorej naľavo od znamienka? je napísaná podmienka a napravo - dva operátory oddelené znamienkom: , naľavo od znamienka sa vykoná operátor, ak je podmienka pravdivá, a napravo od znamienka: operátor sa vykoná, ak podmienka je nepravdivé.

stav? operátor1: operátor2;

Dva hlavné príkazy na vytváranie štruktúr vetvenia na základe podmienok sú if a switch. Najpoužívanejší príkaz if sa používa v štruktúrach podmieneného skoku. Na druhej strane, v určitých situáciách, najmä ak musíte prechádzať jednou z mnohých vetiev v závislosti od hodnoty jedného výrazu a použitie viacerých príkazov if vedie ku komplikácii kódu, príkaz switch sa stáva viac pohodlné.

Predtým, ako sa naučíte tieto operátory, musíte pochopiť logické výrazy a operácie.

Booleovské operácie

Booleovské operácie vám umožňujú kombinovať logické hodnoty (nazývané aj pravdivostné hodnoty) a vytvárať nové logické hodnoty. Ako je uvedené v tabuľke nižšie, štandardné logické operátory (and, or, not a xor) sú podporované v PHP, pričom prvé dva majú alternatívne verzie.

PHP booleovské operácie
Prevádzka Popis
a Operácia, ktorej výsledok je pravdivý vtedy a len vtedy, ak sú pravdivé oba jej operandy
alebo Operácia, ktorej výsledok sa vyhodnotí ako pravdivý, ak sa jeden z jej operandov (alebo obidva operandy) vyhodnotí ako pravdivý
! Operácia, ktorej výsledok je pravdivý, ak je jej jediný operand (uvedený napravo od znamienka operátora) nepravdivý, a nepravdivý, ak je operand pravdivý
xor Operácia, ktorej výsledok je pravdivý, ak je pravdivý ktorýkoľvek z jej operandov (ale nie oba).
&& Rovnaký ako operátor and, ale viaže svoje operandy silnejšie ako tento operátor
|| Rovnaký ako operátor alebo, ale viaže svoje operandy silnejšie ako tento operátor

Operácie && a || by mal byť oboznámený programátorom v jazyku C. Prevádzka! zvyčajne sa nazýva nie preto, že sa stáva negáciou operandu, na ktorý sa vzťahuje.

Ak chcete otestovať, či sú oba operandy PRAVDA, použite operátor AND, ktorý možno zapísať aj ako dvojitý ampersand (&&). AND aj && sú boolovské operátory, jediný rozdiel je v tom, že operátor && má vyššiu prioritu ako operátor AND. To isté platí pre operátory OR a ||. Operátor AND vráti hodnotu TRUE iba vtedy, ak sú oba operandy TRUE; v opačnom prípade sa vráti FALSE.

Ak chcete skontrolovať, či je aspoň jeden operand PRAVDA, použite operátor OR, ktorý možno zapísať aj ako dvojitú zvislú čiaru (||). Tento operátor vráti hodnotu TRUE, ak má aspoň jeden z jeho operandov hodnotu TRUE.

Pri použití operátora OR v programe sa môžu objaviť jemné logické chyby. Ak PHP zistí, že prvý operand je PRAVDA, nevyhodnotí hodnotu druhého operandu. To šetrí čas vykonávania, ale musíte byť opatrní, aby ste do druhého operandu nevložili kód, na ktorom program závisí, aby fungoval správne.

Ak chcete skontrolovať, či je iba jeden z operandov PRAVDA (ale nie obidva naraz), umožňuje operátor XOR. Tento operátor vráti hodnotu TRUE, ak je iba jeden z jeho operandov TRUE. Ak sú oba operandy TRUE, operátor vráti hodnotu FALSE.

Boolovskú hodnotu môžete invertovať pomocou operátora NOT, ktorý sa často píše ako výkričník (!). Vracia TRUE, ak je operand FALSE, a FALSE, ak je operand TRUE.

V tabuľke nižšie sú uvedené niektoré boolovské výrazy a ich výsledky:

Porovnávacie operácie

V tabuľke nižšie sú uvedené porovnávacie operácie, ktoré možno použiť na čísla alebo reťazce:

Porovnávacie operácie
Prevádzka názov Popis
== Rovná sa Operácia, ktorej výsledok je pravdivý, ak sú jej operandy rovnaké, inak je nepravdivý
!= Nerovná sa Operácia, ktorá sa vyhodnotí ako nepravda, ak sú jej operandy rovnaké, a inak sa vyhodnotí ako pravda
< Menej Operácia, ktorej výsledok je pravdivý, ak je ľavý operand menší ako pravý operand, inak je nepravdivý
> Viac Operácia, ktorej výsledok sa vyhodnotí ako pravda, ak je ľavý operand väčší ako pravý operand, inak sa vyhodnotí ako nepravda
<= Menej alebo rovnaké Operácia, ktorej výsledok sa vyhodnotí ako pravda, ak je ľavý operand menší alebo rovný pravému operandu, inak sa vyhodnotí ako nepravda
>= Viac alebo rovnaké Operácia, ktorej výsledok sa vyhodnotí ako pravda, ak je ľavý operand väčší alebo rovný pravému operandu, inak sa vyhodnotí ako nepravda
=== Zhodne Operácia, ktorej výsledok sa vyhodnotí ako pravda, ak sú oba operandy rovnaké a sú rovnakého typu, inak sa vyhodnotí ako nepravda

Jednou veľmi častou chybou je nezamieňať si operátor priradenia (=) s operátorom porovnávania (==).

Priorita prevádzky

Samozrejme, nemali by ste nadužívať programovací štýl, v ktorom je postupnosť operácií spôsobená najmä používaním pravidiel priority, keďže kód napísaný týmto štýlom je pre tých, ktorí ho budú ďalej študovať, náročný, ale treba poznamenať, že porovnávacie operácie majú vyššiu prioritu ako logické operácie. To znamená, že príkaz s testovacím výrazom, ako je ten nižšie

PHP kód $var1 = 14; $var2 = 15; if (($var1< $var2) && ($var2 < 20)) echo "$var2 больше $var1 но меньше 20";

možno prepísať ako

PHP kód ... ak ($var1< $var2 && $var2 < 20) ...

ak-iné vyhlásenie

Inštrukcia ak umožňuje vykonať blok kódu, ak sa podmienený výraz v tejto inštrukcii vyhodnotí ako TRUE; inak sa blok kódu nevykoná. Ako podmienku možno použiť akýkoľvek výraz, vrátane kontroly nenulovej hodnoty, rovnosti, NULL s účasťou premenných a hodnôt vrátených funkciami.

Nezáleží na tom, ktoré jednotlivé podmienkové výrazy tvoria podmieňovaciu vetu. Ak je podmienka pravdivá, vykoná sa kód programu uzavretý v zložených zátvorkách (()). V opačnom prípade to PHP ignoruje a pokračuje v kontrole druhej podmienky, pričom kontroluje všetky podmienky, ktoré ste si zapísali, až kým nenarazí na príkaz inak, po ktorom automaticky vykoná tento blok. príkaz else je voliteľný.

Syntax príkazu if:

If (podmienený výraz) ( blok kódu; )

Ak sa podmienený výraz vyhodnotí ako TRUE, potom sa vykoná blok kódu za ním. Ak je v nasledujúcom príklade premenná $username nastavená na "Admin", zobrazí sa uvítacia správa. Inak sa nič nestane:

PHP kód $username = "Admin"; if ($username == "Admin") ( echo "Vitajte na stránke správcu."; )

Ak blok kódu obsahuje iba jednu inštrukciu, zložené zátvorky sú voliteľné, je však dobrým zvykom ich vkladať vždy, pretože kód sa s nimi ľahšie číta a upravuje.

Voliteľný príkaz else je blok kódu, ktorý sa štandardne vykoná, keď sa podmienený výraz vyhodnotí ako FALSE. Príkaz else nemožno použiť oddelene od príkazu if, pretože else nemá svoj vlastný podmienený výraz. To znamená, že else a if by mal byť vo vašom kóde vždy spolu:

ak a iné vyhlásenia $username = "žiadny admin"; if ($username == "Admin") ( echo "Vitajte na stránke správcu."; ) else ( echo "Vitajte na stránke používateľa."; )

Nezabudnite uzavrieť blok kódu v príkaze if zloženou zátvorkou, ak na začiatok bloku vložíte zloženú zátvorku. Blok else musí mať tiež otváracie a zatváracie zložené zátvorky, ako v bloku if.

To všetko je dobré, okrem prípadov, keď potrebujete skontrolovať niekoľko podmienok za sebou. Návod na to ináč Ak. Umožňuje vám testovať ďalšie podmienky, kým sa nenájde pravdivá alebo kým sa nedosiahne blok else. Každý príkaz elseif má svoj vlastný blok kódu umiestnený hneď za podmieneným výrazom príkazu elseif. Príkaz elseif nasleduje po príkaze if a pred príkazom else, ak existuje.

Syntax pre príkaz elseif je trochu komplikovanejšia, ale nasledujúci príklad vám pomôže pochopiť ju:

Kontrola viacerých podmienok $username = "hosť"; if ($username == "Správca") ( echo "Vitajte na stránke správcu."; ) elseif ($username == "Hosť") ( echo "Zobraziť nie je k dispozícii."; ) else ( echo "Vitajte na stránke užívateľ." ;)

Kontrolujú sa tu dve podmienky a v závislosti od hodnoty premennej $username sa vykonávajú rôzne akcie. A stále je tu možnosť niečo urobiť, ak sa hodnota premennej líši od prvých dvoch.

Ternárny operátor?:

Operátor ?: je ternárny (trojitý) operátor, ktorý má tri operandy. Funguje ako príkaz if, ale vracia hodnotu jedného z dvoch výrazov. Výraz, ktorý sa má vyhodnotiť, je určený podmieneným výrazom. Dvojbodka (:) slúži ako oddeľovač výrazov:

(podmienka)? vyhodnotiť, ak je podmienka pravdivá: vyhodnotiť, ak je podmienka pravdivá;

Nižšie uvedený príklad testuje hodnotu a vracia rôzne reťazce v závislosti od jej hodnoty (TRUE alebo FALSE):

Vytvorenie správy pomocou operátora ?: $prihlásený_in = TRUE; $user = "Igor"; $banner = (!$logged_in) ? "Registrovať!" : "Vitajte späť, $užívateľ!"; echo $banner;

Je celkom zrejmé, že vyššie uvedené vyhlásenie je ekvivalentné nasledujúcemu tvrdeniu:

PHP kód $prihlásený_in = TRUE; $user = "Igor"; if (!$logged_in) ( $banner = "Prihlásiť sa!"; ) else ( $banner = "Vitajte späť, $používateľ!"; ) echo $banner;

príkaz prepnúť

Inštrukcia prepínač porovnáva výraz s viacerými hodnotami. Spravidla sa ako výraz používa premenná v závislosti od hodnoty, ktorá má byť vykonaná v jednom alebo druhom bloku kódu. Predstavte si napríklad premennú $action, ktorá môže mať hodnoty „ADD“ (pridať), „MODIFY“ (upraviť) a „DELETE“ (odstrániť). Príkaz switch uľahčuje definovanie bloku kódu, ktorý by sa mal vykonať pre každú z týchto hodnôt.

Aby sme ukázali rozdiel medzi príkazmi if a switch, otestujme premennú na viacerých hodnotách. Nižšie uvedený príklad ukazuje kód, ktorý implementuje takúto kontrolu na základe príkazu if a v nasledujúcom príklade na základe príkazu switch:

Zhoda s jednou z viacerých hodnôt (príkaz if) if ($action == "ADD") ( echo "Vykonajte sčítanie."; echo "Počet inštrukcií v každom bloku je neobmedzený."; ) elseif ($action == "MODIFY") ( echo "Vykonajte úpravu." ; ) elseif ($action == "DELETE") ( echo "Vykonať odstránenie."; ) Zhoda jednej z viacerých hodnôt (príkaz prepnúť) prepínač ($action) ( prípad "ADD": echo "Vykonať pridanie."; echo "Počet inštrukcií v každom bloku nie je obmedzený."; zlom; veľkosť písmen "MODIFY": echo "Vykonať zmenu."; prerušiť ; veľkosť písmen "DELETE" : echo "Vykonať odstránenie."; prerušenie; )

Príkaz switch prevezme hodnotu vedľa kľúčového slova switch a začne ju porovnávať so všetkými hodnotami vedľa kľúčových slov prípad v poradí, v akom sa objavia v programe. Ak sa nenájde žiadna zhoda, žiadny z blokov sa nevykoná. Po nájdení zhody sa vykoná príslušný blok kódu. Vykonajú sa aj nižšie uvedené bloky kódu – až do konca príkazu switch alebo až po kľúčové slovo prestávka. To je vhodné na organizáciu procesu pozostávajúceho z niekoľkých po sebe nasledujúcich krokov. Ak používateľ už prešiel niektorými krokmi, bude môcť pokračovať v procese tam, kde skončil.

Výraz vedľa príkazu switch musí vrátiť hodnotu primitívneho typu, ako je číslo alebo reťazec. Pole možno použiť iba ako jeden prvok poľa, ktoré má hodnotu elementárneho typu.

Predvolený výber

Ak sa hodnota podmieneného výrazu nezhoduje so žiadnou z možností navrhovaných v príkazoch case, príkaz switch v tomto prípade tiež umožňuje niečo urobiť, približne ako príkaz else konštrukcie if, elseif, else. Aby ste to dosiahli, musíte urobiť pokyn ako poslednú možnosť vo výberovom zozname predvolená:

Vytvorenie chybového hlásenia s predvoleným príkazom $akcia = "ODSTRÁNIŤ"; prepínač ($action) ( prípad "ADD": echo "Vykonať pridanie."; echo "Počet inštrukcií v každom bloku nie je obmedzený."; zlom; veľkosť písmen "MODIFY": echo "Vykonať zmenu."; prerušiť ; veľkosť písmen "DELETE" : echo "Vykonať odstránenie."; break; predvolené: echo "Chyba: príkaz $action nie je povolený, ". "možno použiť iba príkazy ADD, MODIFY a DELETE."; )

Okrem bežného príkazu switch podporuje alternatívnu syntax – konštrukciu kľúčového slova spínač/koncový spínač, ktorá definuje začiatok a koniec príkazu namiesto zložených zátvoriek:

Príkaz switch končí kľúčovým slovom endwitch switch ($action): case "ADD": echo "Vykonať pridávanie."; echo "Počet inštrukcií v každom bloku je neobmedzený."; prestávka; case "MODIFY": echo "Vykonajte úpravu."; prestávka; case "DELETE": echo "Vykonať mazanie."; prestávka; predvolené: echo "Chyba: príkaz $action nie je platný,". "možno použiť iba príkazy ADD, MODIFY a DELETE."; koncový spínač;

Prerušiť vykonávanie

Ak sa má vykonať iba blok kódu zodpovedajúci určitej hodnote, kľúčové slovo break by sa malo vložiť na koniec tohto bloku. PHP interpret, keď narazí na kľúčové slovo break, preskočí na riadok za uzatváracou zátvorkou príkazu switch (alebo kľúčového slova endwitch). Ak však nepoužijete príkaz break, kontrola pokračuje v nasledujúcich prípadoch konštrukcie prepínača. Príklad je uvedený nižšie:

Čo sa stane, keď neexistujú žiadne prerušenia $action="ZOSTAVENIE OBJEDNÁVKY"; prepínač ($action) ( prípad "ZOSTAVENIE OBJEDNÁVKY": echo "Poriadok zostavenia.
"; prípad "BALENIE": echo "Balík.
"; prípad "POSLAŤ": echo "Doručiť zákazníkovi.
"; }

Ak je premenná $action nastavená na hodnotu "ZOSTAVENIE OBJEDNÁVKY", výstup tohto úryvku bude takýto:

Zhromažďovať objednávku. Aby som to zabalil. Doručiť zákazníkovi.

Za predpokladu, že fáza zostavenia už bola dokončená a $action je nastavená na "PACKAGE", výsledok bude:

Aby som to zabalil. Doručiť zákazníkovi.

Niekedy je užitočná absencia príkazov break, ako v príklade vyššie, kde sa tvoria fázy objednávky, ale vo väčšine prípadov by sa mal použiť tento príkaz.

Typy údajov Cykly 1 2 3 4 5 6 7 8 9 10

PHP podporuje nasledujúci štandard logické operátory: "AND" a "&&" (logické AND), "ALEBO" a "||" (logické ALEBO), "!" (logické NIE) a "XOR" (exkluzívne OR). Všetky sa používajú v logických výrazoch na určenie jedného alebo druhého priebehu vykonávania programu v závislosti od výsledku vráteného výrazom a odkazujú na binárne operátory, s výnimkou operátora "!" , ktorý je unárny. Pri použití logických operátorov sa ich operandy konvertujú na dátový typ boolean () a výsledok závisí od daných logických hodnôt operandov a typu logického operátora (pozri tabuľku č. 1).

Tabuľka číslo 1. Logické operátory

Rozdiel medzi „AND“ a „&&“ a „ALEBO“ a „||“ je, že operátory „AND“, „OR“ a „XOR“ majú nižšiu prioritu, ktorá je dokonca nižšia ako priorita operátorov priradenia (pozri tabuľku operátorov PHP).

Je dôležité pochopiť, ako interpret narába s boolovskými výrazmi. Ak vo výraze s operátorom "||". prvý (ľavý) operand sa vyhodnotí ako true, alebo vo výraze s operátorom "&&" bude prvý operand vyhodnotený ako nepravda , potom druhý (pravý) operand nebude vyhodnotený. Je to spôsobené tým, že konečný výsledok sa v takýchto prípadoch nezmení (pozri tabuľku č. 1), a preto nie je potrebné tráviť čas spracovaním kódu druhého operandu. Treba si však dávať pozor, aby ste nevložili kód do správneho operandu, od ktorého môže závisieť správna činnosť programu.

Použitie logických operátorov je znázornené v príklade č.

$a=0||false; //Teraz $a==pravda, pretože 5->pravda a 8->pravda $a=5& //Teraz $a==nepravda, pretože "0"->false $a="0"& //Teraz $a==pravda $a=!false; //Teraz $a==false, pretože 5->pravda $a=!5; /* Funkcia foo() nebude volaná kvôli skratom */ $a=(false&&foo()); $b=(true||foo()); $c=(false a foo()); $d=(true alebo foo()); /* Rozdiel "||" od "alebo" a "&&" od "and" */ //Správa sa ako ($a=(false||true)) $a=false||true; // Pôsobí ako (($a=false) alebo true) $a=false alebo true; //Správa sa ako ($a=(false&&true)) $a=false& //Správa sa ako (($a=false) a pravda) $a=nepravda a pravda; //Teraz $a==5, funguje ako (($a=5) xor 0) $a=5 xor 0; //Teraz $a==5 funguje ako (($a=5) a 0) $a=5 a 0; //Teraz $a==5 funguje ako (($a=5) alebo 0) $a=5 alebo 0; //Teraz $a==pravda, správa sa ako ($a=(5||0)) $a=5||0; //Teraz $a==false, správa sa ako ($a=(5&&0)) $a=5& //Teraz $a==pravda, správa sa ako ($a=(5 xor 6)) $a=(5 xor 6); ?>

Príklad č. 2. Používanie booleovských operátorov

Posledná aktualizácia: 1.11.2015

V PHP môžeme použiť rôzne operátory: aritmetické, logické atď. Pozrime sa na každý typ operácie.

Aritmetické operácie

    + (operácia sčítania)

    Napríklad $a + 5

    - (operácia odčítania)

    Napríklad $a - 5

    * (násobenie)

    Napríklad $a * 5

    / (divízia)

    Napríklad $a / 5

    % (zvyšok delenia)

    Napríklad: $a=12; echo $a % 5; // rovná sa 2

    ++ (prírastok / zvýšenie hodnoty o jeden)

    Napríklad ++$a

    Je dôležité pochopiť rozdiel medzi výrazmi ++$a a $a++ . Napríklad:

    $a=12; $b=++$a; // $b sa rovná 13 echo $b;

    Tu sa najprv k hodnote premennej $a pripočíta jedna a potom sa jej hodnota vyrovná premennej $b. Inak by to bolo, keby výraz vyzeral takto: $b=$a++; . Tu sa najprv hodnota premennej $a rovnala premennej $b a následne sa inkrementovala hodnota premennej $a.

    -- (znížiť/znížiť hodnotu o jeden)

    Napríklad --$a . A rovnako ako v prípade prírastku existujú dva typy zápisu: --$a a $a--

Operácie priraďovania

    Nastaví premennú na konkrétnu hodnotu: $a = 5

    Sčítanie, po ktorom nasleduje priradenie výsledku. Napríklad: $a=12; $a += 5; echo $a; // rovná sa 17

    Odčítanie, po ktorom nasleduje priradenie výsledku. Napríklad: $a=12; $a -= 5; echo $a; // rovná sa 7

    Násobenie s následným priradením výsledku: $a=12; $a *= 5; echo $a; // rovná sa 60

    Delenie nasledované priradením výsledku: $a=12; $a /= 5; echo $a; // rovná sa 2,4

    Reťazenie reťazcov s priradením výsledku. Platí pre dva riadky. Ak premenné neukladajú reťazce, ale napríklad čísla, ich hodnoty sa skonvertujú na reťazce a potom sa vykoná operácia: $a=12; $a .= 5; echo $a; // rovná sa 125 // identické s $b="12"; $b .="5"; // rovná sa 125

    Získanie zvyšku delenia a následné priradenie výsledku: $a=12; $a %= 5; echo $a; // rovná sa 2

Porovnávacie operácie

Porovnávacie operácie sa spravidla používajú v podmienených konštrukciách, keď je potrebné porovnať dve hodnoty a v závislosti od výsledku porovnania vykonať nejaké akcie. K dispozícii sú nasledujúce porovnávacie operácie.

    Operátor rovnosti porovnáva dve hodnoty a ak sú rovnaké, vráti hodnotu true, inak vráti hodnotu false: $a == 5

    Operátor identity tiež porovnáva dve hodnoty a ak sú rovnaké, vráti hodnotu true, inak vráti hodnotu false: $a === 5

    Porovná dve hodnoty a vráti hodnotu true, ak nie sú rovnaké, inak vráti hodnotu false: $a != 5

    Porovná dve hodnoty, a ak nie sú rovnaké, vráti true, inak vráti nepravdu: $a !== 5

    Porovná dve hodnoty a ak je prvá väčšia ako druhá, vráti hodnotu true, inak vráti hodnotu false: $a > 5

    Porovná dve hodnoty a ak je prvá menšia ako druhá, vráti hodnotu true, inak vráti hodnotu false: $a< 5

    Porovná dve hodnoty a ak je prvá väčšia alebo rovná druhej, vráti hodnotu true, inak vráti hodnotu false: $a >= 5

    Porovná dve hodnoty a ak je prvá menšia alebo rovná druhej, vráti hodnotu true, inak vráti hodnotu false: $a<= 5

Operátor rovnosti a identity

Oba operátory porovnávajú dva výrazy a vrátia hodnotu true, ak sú výrazy rovnaké. Ale sú medzi nimi rozdiely. Ak sa v operácii rovnosti zoberú dve hodnoty rôznych typov, znížia sa na jednu - tú, ktorú tlmočník považuje za optimálnu. Napríklad:

Je zrejmé, že premenné ukladajú rôzne hodnoty rôznych typov. No pri porovnaní sa zredukujú na rovnaký typ – číselný. A premenná $a bude pretypovaná na číslo 22. A výsledkom toho budú obe premenné rovnaké.

Alebo napríklad nasledujúce premenné sa budú rovnať:

$a = nepravda; $b = 0;

Aby sa predišlo takýmto situáciám, používa sa operácia ekvivalencie, ktorá berie do úvahy nielen hodnotu, ale aj typ premennej:

$a = "22a"; $b = 22; if($a===$b) echo "rovná sa"; inak echo "nerovná sa";

Teraz sa premenné nebudú rovnať.

Operátory nerovnosti != a !== fungujú podobne.

Booleovské operácie

Booleovské operácie sa zvyčajne používajú na spojenie výsledkov dvoch porovnávacích operácií. Napríklad, musíme vykonať určitú akciu, ak je splnených niekoľko podmienok. K dispozícii sú nasledujúce logické operácie:

    Vráti hodnotu true, ak obe porovnávacie operácie vrátia hodnotu true, inak vráti hodnotu false: $a == 5 && $b = 6

    Podobne ako && : $a == 5 a $b > 6

    Vráti hodnotu true, ak sa aspoň jedna porovnávacia operácia vyhodnotí ako pravda, inak vráti hodnotu false: $a == 5 || $b = 6

    Podobne ako pri operácii || : $a< 5 or $b > 6

    Vráti hodnotu true, ak operácia porovnania vráti hodnotu false: !($a >= 5)

    Vráti hodnotu true, ak je pravdivá iba jedna z hodnôt. Ak sú pravdivé obidve alebo ani jedna, vráti hodnotu false. Napríklad: $a=12; $b=6; if($a xor $b) echo "true"; inak echo "false";

    Tu bude výsledok logickej operácie false , pretože obe premenné majú určitú hodnotu. Zmeňme kód:

    $a=12; $b=NULL; if($a xor $b) echo "true"; inak echo "false";

    Tu už bude výsledok true , keďže hodnota jednej premennej nie je nastavená. Ak je premenná NULL, potom v logických operáciách bude jej hodnota považovaná za nepravdivú

Bitové operácie

Bitové operácie sa vykonávajú na jednotlivých bitoch čísla. Čísla sa berú do úvahy v binárnom vyjadrení, napríklad 2 v binárnom vyjadrení je 010, číslo 7 je 111.

    & (boolovské násobenie)

    Násobenie sa vykoná po bitoch a ak oba operandy majú bitové hodnoty rovné 1, operácia vráti 1, inak sa vráti číslo 0. Napríklad: $a1 = 4; //100 $ b1 = 5; //101 ozvena $a1 & $b1; // rovná sa 4

    Tu je číslo 4 v binárnom kóde 100 a číslo 5 je 101. Vynásobte čísla bit po bite a získajte (1*1, 0*0, 0*1) = 100, teda číslo 4 v desiatkovej sústave.

    | (logický dodatok)

    Podobne ako pri logickom násobení sa operácia vykonáva aj s binárnymi číslicami, ale teraz sa vráti jednotka, ak aspoň jedno číslo v tomto bite má jednotku. Napríklad: $a1 = 4; //100 $ b1 = 5; //101 echo $a1 | $b1; // rovná sa 5

    ~ (logická negácia)

    invertuje všetky číslice: ak je hodnota číslice 1, stane sa nulou a naopak. $b = 5; echo ~$b;

    X<

    x>>y - posunie číslo x doprava o y číslic. Napríklad 16>>1 posunie číslo 16 (čo je 10 000 v binárnom systéme) o jednu číslicu doprava, výsledkom čoho je 1 000 alebo 8 v desiatkovej sústave

Spájanie reťazcov

Operátor bodka sa používa na zreťazenie reťazcov. Napríklad spojme niekoľko riadkov:

$a="Ahoj,"; $b="svet"; echo $a . $ b. "!";

Ak premenné nepredstavujú reťazce, ale iné typy, napríklad čísla, ich hodnoty sa skonvertujú na reťazce a potom sa uskutoční aj operácia zreťazenia reťazcov.