Internet Windows Android

Expresia valorii declarației comutatorului PHP. Declarații condiționale php if, switch și declarație ternară

Starea și alegerea sunt construcții cheie ale limbajului. Luarea corectă a deciziilor este baza unui algoritm de înaltă calitate și a unui cod clar, ușor de înțeles. Proiectarea corectă a algoritmului și utilizarea corectă a comentariilor sunt factori de stabilitate și fiabilitate.

Programarea modernă nu este încă lipsită de rigiditate. Odată scris, codul se poate adapta la condițiile problemei în schimbare numai cu ajutorul unei persoane competente. Totuși, nivelul de portabilitate a codului este determinat de nivelul de calificare al autorului său.

Sintaxa construcției de selecție

Construcția de selectare a cazului de comutare PHP este foarte ușor de scris, executată corect și convenabilă în practică. Exemplul oferă o funcție care decorează textul Etichete HTML... Dacă primul parametru conține „bold” sau „italic”, atunci rezultatul funcției înfășoară al doilea parametru cu etichete „puternice” sau „i”.

Rezultatul din browser afișează conținutul celui de-al doilea parametru cu caractere aldine sau cursive. Orice altă valoare pentru primul parametru este interpretată ca o culoare și înfășoară al doilea parametru cu o etichetă „font”.

Această funcție nu verifică corectitudinea parametrilor inițiali și poate fi utilizată numai în acea parte a codului în care parametrii nu pot depăși limitele admise.

În exemplul propus, utilizarea operatorului „break” este redundantă, deoarece, ca urmare a executării oricărei condiții, funcția va ieși de către operatorul „return”.

Descrierea constructului PHP: comutator caz

Condiția verificată este scrisă între paranteze după cuvânt cheie"intrerupator". Corpul structurii constă din secțiuni „caz” și un bloc de instrucțiuni „implicite”, care se execută numai dacă niciunul dintre blocurile „caz” nu a funcționat.

Există o nuanță foarte semnificativă. Blocul de instrucțiuni „caz” începe după simbolul „:” și se termină cu instrucțiunea „pauză”. Instrucțiunea „pauză” este opțională. Dacă nu, atunci va fi verificată următoarea condiție „caz”. Condițiile sunt întotdeauna verificate până la primul meci. Bineînțeles, condițiile de aici sunt doar „==”.

Fiecare secțiune „caz” este executată numai dacă condiția este îndeplinită, dar blocul de instrucțiuni „implicit” va fi întotdeauna executat dacă lipsește o instrucțiune „pauză” din secțiunea „caz” care a declanșat sau dacă niciuna dintre condițiile nu s-a potrivit.

De fapt, în PHP: un caz de comutare cu mai multe valori are mai multe blocuri de instrucțiuni. Pentru a urma formal sintaxa, fiecare bloc de instrucțiuni trebuie să fie terminat cu un „break”.

De îndată ce condiția se potrivește, secțiunea corespunzătoare este executată și, dacă nu există „pauză” în ea, tot ceea ce o urmează. În exemplu, valoarea variabilei „$ x” este 1 și nu există „pauze”, deci rezultatul este „-un - doi - implicit-”.

Cuibare condiționată

Limbajul nu limitează dezvoltatorul la nivelul de cuibărire. Este permisă cuibarea unui caz de comutare. PHP, de asemenea, nu restricționează programatorul în alegerea operatorilor care pot fi utilizați în interiorul unei carcase.

Acest lucru permite algoritmi frumoși și ușor de citit. De exemplu, un tabel de reguli CSS trebuie recunoscut. Puteți seta imediat carcasa comutatorului PHP pentru a recunoaște clasele și identificatorii, apoi recunoaște regulile în sine. Aceasta este o soluție evidentă, dar greoaie. Atât clasele, cât și identificatorii folosesc reguli similare.

Este mai convenabil să efectuați recunoașterea regulilor folosind un caz de comutare. Puteți include o funcție în PHP care se va ocupa de recunoașterea regulilor. Puteți merge mai departe. Multe reguli permit semnificații similare. Gândind în acest fel, încercați să construiți procesul invers: switch case în PHP va fi executat sub formă de funcții, primul funcționează la nivelul valorii, al doilea la nivelul regulilor, iar al treilea este apelat de la nivelul unui clasa sau identificatorul specific.

Este recomandabil să utilizați un design special la alegere comutator... Această construcție este concepută pentru a selecta acțiuni, în funcție de valoarea expresiei specificate. Proiecta comutator seamănă oarecum cu o construcție dacă-altfel, care, de fapt, este omologul său. Construcția de alegere poate fi utilizată dacă există multe opțiuni sugerate, de exemplu, mai mult de 5, iar acțiunile specifice trebuie efectuate pentru fiecare opțiune. În acest caz, utilizarea construcției dacă-altfel devine cu adevărat incomod.

Sintaxa construcției comutator astfel de:

comutator (expresie) (

valoare caz 2: comenzi2;
. . .


}

Principiul de funcționare a structurii comutator astfel de:

  1. Se calculează valoarea expresiei;
  2. Se vizualizează un set de valori. Fie valoarea 1 să fie egală cu valoarea expresiei calculate în primul pas. Dacă structura (operatorul) nu este specificată, atunci se vor executa comenzile i, i + 1, i + 2, ..., N. În caz contrar (există o pauză), numai comanda cu numărul i va fi executat.
  3. Dacă niciuna dintre valorile din set nu se potrivește cu valoarea expresiei, atunci blocul implicit, dacă este specificat, este executat.

Să dăm exemple de utilizare a construcției comutator:

$ x = 1;
// Folosiți if-else
if ($ x == 0) (
ecou "x = 0
" ;
) elseif ($ x == 1) (
ecou "x = 1
" ;
) elseif ($ x == 2) (
ecou "x = 2
" ;
}
// Utilizați comutatorul
comutare ($ x) (
caz 0:
ecou "x = 0
" ;
pauză;
cazul 1:
ecou "x = 1
" ;
pauză;
cazul 2:
ecou "x = 2
" ;
pauză;
}
?>

Ieșirile de script considerate x = 1 de două ori. Un alt exemplu de utilizare a construcției comutator:

$ x = "Apple";
comutare ($ x) (
carcasa „Apple”:
ecou „Acesta este un măr”;
pauză;
carcasa „Pere”:
ecou „Aceasta este Pere”;
pauză;
carcasa "Pepene verde":
ecou „Acesta este pepene verde”;
pauză;
}
?>

Acest script afișează „Acesta este un Apple”.

Proiecta intrerupator efectuate în etape. La început, nu se execută niciun cod. Numai când construcția caz găsit cu o valoare care se potrivește cu valoarea expresiei intrerupator, PHP începe să execute construcții. PHP continuă să execute construcții până la sfârșitul blocului intrerupator până la operator pauză... Dacă nu utilizați construcții (operatori) pauză, scenariul va arăta astfel:

$ x = 0;
comutare ($ x) (
caz 0:
ecou "x = 0
" ;
cazul 1:
ecou "x = 1
" ;
cazul 2:
ecou "x = 2
" ;
}
// Fără a utiliza ieșiri de pauză
// x = 0
// x = 1
// x = 2
?>

Lista operatorilor pentru caz poate fi și gol, pur și simplu transferă controlul în lista operatorilor până la următoarea construcție caz:

comutare ($ x) (
caz 0:
cazul 1:
cazul 2:
ecou „x este mai mic de 3, dar nu negativ”;
pauză;
cazul 3:
ecou „x = 3”;
}
?>

Când nicio valoare din set nu se potrivește cu valoarea expresiei, atunci blocul este executat Mod implicit dacă este specificat, de exemplu:

$ x = 3;
comutare ($ x) (
caz 0:
ecou „x = 0”;
pauză;
cazul 1:
ecou „x = 1”;
pauză;
cazul 2:
ecou „x = 2”;
pauză;
Mod implicit:
ecou „x nu este 0, 1 sau 2”;
}
?>

Acest script produce „x nu este 0, 1 sau 2” din moment ce variabila $ x = 3.

comutator (expresie):
valoarea cazului 1: comenzi1;
. . .
valoarea cazului N: comenziN;
]
comutator final;

Un exemplu practic de utilizare a sintaxei alternative pentru un construct comutator:

$ x = 3;
comutator ($ x):
caz 0:
ecou „x = 0”;
pauză;
cazul 1:
echo forum portal PHP. SU

Lecția va acoperi declarațiile condiționale php: instrucțiunea if și instrucțiunea switch

Enunțurile condiționale php sunt reprezentate de trei constructe principale:

  • operator stare dacă,
  • comutator operator intrerupator
  • și operator ternar.

Să aruncăm o privire mai atentă la fiecare dintre ele.

Instrucțiune PHP if

Fig 3.1. Declarație IF condiționată, versiune scurtată


Orez. 3.2. IF ELSE sintaxa afirmației condiționale


Orez. 3.3. Sintaxa completă pentru IF elseif declarație condițională

Să rezumăm:

Sintaxa completă este:

if (condiție) (// dacă condiția este adevărată operator1; operator2;) elseif (condiție) (operator1; ...) else (// dacă condiția este falsă operator1; operator2;)

  • Sintaxa scurtată poate nu conțin o parte din construcție cu else și nu conțin o condiție suplimentară elseif
  • În loc de cuvântul funcțional elseif, puteți scrie else if (separat)
  • Pot exista mai multe alte elemente într-o declarație if. Prima expresie întâlnită altfel, egală cu TRUE, va fi executată.
  • Dacă există o condiție alternativă elseif, clauza else trebuie să fie ultima în sintaxă.

Un punct: poate fi folosit într-o declarație condițională în locul acoladelor. În acest caz, operatorul se termină cu cuvântul de serviciu endif

Orez. 3.4. Instrucțiunea condițională If și Endif în php

Exemplu:

if ($ x> $ y): ecou $ x. "mai mare decât". $ y; elseif ($ x == $ y): // când utilizați ":" nu puteți scrie separat altfel dacă echo $ x. "este egal". $ y; else: echo $ x. "not> and not =". $ y; endif;

Important: Când utilizați două puncte în loc de aparate dentare, nu puteți scrie în două cuvinte!

Operații logice într-o stare

Următoarele operații pot fi prezente în clauza if dintre paranteze:

Exemplu: verificați valoarea unei variabile numerice: dacă este mai mică sau egală cu 10, - emiteți un mesaj „Număr mai mic sau egal cu 10”, în caz contrar, emiteți un mesaj „Numărul este mai mare de 10”


Soluţie:

numar $ = 15; if ($ număr<=10) { echo "число меньше или равно 10"; } else { echo "число больше 10"; }

Blocurile de cod PHP pot fi sparte, luați în considerare un exemplu:

Exemplu: Afișați codul html „A este egal cu 4” dacă variabila $ a este într-adevăr 4


1 Soluție:
1 2 3 4

2 Soluție:

1 2 3 A este egal cu 4

A este egal cu 4

Job PHP 3_1: Afișează traducerea culorilor din de limba englezăîn rusă, verificând valoarea variabilei (în care culoarea este atribuită: $ a = "albastru")


Jobul PHP 3_2: Găsiți maxim trei numere

Operații de comparație și regula minciunii

În instrucțiunea if, trebuie să existe paranteze expresie booleană sau o variabilă care este considerată din punctul de vedere al algebrei logice, returnând valori fie adevărate, fie false

Acestea. o singură variabilă poate fi utilizată ca condiție. Să luăm în considerare un exemplu:

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

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

În exemplu, traducătorul de limbă php va lua în considerare variabila dintre paranteze pentru regula minciunilor:

Regula LIE sau ceea ce se consideră fals:

  • logic Fals
  • zero întreg ( 0 )
  • zero valid ( 0.0 )
  • linie goalăși linia «0»
  • matrice fără elemente
  • obiect fără variabile
  • tip special NUL

Astfel, în exemplul considerat, variabila $ a este egală cu una, respectiv condiția va fi adevărată, iar operatorul ecou $ a; va afișa valoarea variabilei.

Jobul PHP 3_3: a dat o variabilă a cu o valoare șir. Dacă a este egal cu numele, atunci ieșire "Bună ziua, nume!", dacă a este egal cu o valoare goală, atunci ieșire "Bună, străinule!"

Construcții logice ȘI SAU și NU într-un operator condiționat

  1. Uneori este necesar să se prevadă îndeplinirea mai multor condiții în același timp. Apoi condițiile se combină logic ȘI operator — && :
  2. $ a = 1; if ($ a> 0 || $ a> 1) (ecou „a> 0 sau a> 1”;)

  3. Pentru a indica faptul că condiția este falsă, utilizați operator logic NU — ! :
  4. 1 2 3 4 $ a = 1; dacă (! ($ a< 0 ) ) { echo "a не < 0" ; }

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

Comutați declarația PHP

Instrucțiunea switch sau „switch” înlocuiește mai multe instrucțiuni if ​​consecutive. Procedând astfel, compară o variabilă cu un set de valori. Astfel, este cel mai convenabil remediu. pentru organizarea multi-ramificării.

Sintaxă:

1 2 3 4 5 6 7 8 9 10 switch (variabilă $) (caz "valoare1": declarație1; pauză; caz "valoare2": declarație2; pauză; caz "valoare3": declarație3; pauză; [implicit: declarație4; pauză;])

switch (variabilă $) (caz "valoare1": declarație1; pauză; caz "valoare2": declarație2; pauză; caz "valoare3": declarație3; pauză;)

  • Operatorul poate verifica atât valorile șirurilor (caz în care acestea sunt indicate între ghilimele), cât și numerice (fără ghilimele).
  • Declarația de pauză în construcție este necesară. Părăsește construcția dacă condiția este adevărată și declarația corespunzătoare condiției este îndeplinită. Fără pauză, toate declarațiile de caz vor fi executate indiferent de adevărul lor.

Orez. 3.5. Instrucțiunea Conditional Switch


Exemplu: este dată o matrice cu nume masculine complete. Verificați primul element al matricei și, în funcție de nume, emiteți un mesaj de întâmpinare cu un nume scurt.


Soluţie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $ nume = matrice ("Ivan", "Peter", "Semyon"); switch ($ names [0]) (case "Peter": ecou "Hello, Petya!"; break; case "Ivan": echo "Hello, Vanya!"; break; case "Semyon": echo "Hello, Vanya! "; break; implicit: echo" Bună ziua, $ nume! "; pauză; )

$ nume = matrice („Ivan”, „Peter”, „Semyon”); switch ($ names) (case "Peter": ecou "Hello, Petya!"; break; case "Ivan": echo "Hello, Vanya!"; break; case "Semyon": echo "Hello, Vanya!"; break ; implicit: ecou „Bună ziua, $ nume!”; pauză;)

Jobul PHP 3_4:

  • Creați o variabilă $ day și atribuiți-i o valoare numerică arbitrară
  • Utilizați declarația switch pentru a afișa expresia „Aceasta este o zi lucrătoare” dacă valoarea variabilei $ day se încadrează în intervalul numerelor de la 1 la 5 (inclusiv)
  • Redă expresia "Este o zi liberă" dacă valoarea variabilei $ day este 6 sau 7
  • Redă expresia „Ziua necunoscută” dacă valoarea variabilei $ day nu se află în intervalul numerelor de la 1 la 7 (inclusiv)

Completați codul:

1 2 3 4 5 6 7 8 9 10 11 12 ... comutați (...) (caz 1: caz 2: ... ecou „Aceasta este o zi lucrătoare”; pauză; caz 6: ... implicit: ...)

Comutați (...) (caz 1: caz 2: ... ecou „Aceasta este o zi lucrătoare”; pauză; caz 6: ... implicit: ...)

Operator ternar PHP

Operator ternar, adică cu trei operanzi, are o sintaxă destul de simplă, în care în stânga lui? condiția este scrisă, iar în dreapta - doi operatori separați de semn :, în stânga semnului operatorul este executat dacă condiția este adevărată și în dreapta semnului: operatorul este executat dacă condiția este fals.

condiție? operator1: operator2;

Operator intrerupator este similar cu o serie de afirmații IF cu aceeași condiție. În multe cazuri, poate fi necesar să comparați aceeași variabilă (sau expresie) cu multe valori diferite și să executați diferite secțiuni ale codului în funcție de valoarea pe care o ia această variabilă (sau expresie). Acesta este exact cazul pentru care operatorul este convenabil intrerupator.

cometariu: Rețineți că, spre deosebire de alte limbi, declarația continue este utilizată în structurile de comutare și acționează ca. pauză... Dacă instrucțiunea dvs. de comutare se află într-o buclă și trebuie să mergeți la următoarea iterație a buclei, utilizați continua 2.

cometariu:

Rețineți că constructul swich / case utilizează comparații imprecise (==).

Următoarele două exemple ilustrează două moduri diferite de a scrie același lucru. Se folosește o serie de operatori dacăși elseif iar celălalt este operatorul intrerupator:

Exemplu # 1 Operator intrerupator
if ($ i == 0) (ecou "i este 0";) elseif ($ i == 1) (ecou "i este 1";) elseif ($ i == 2) (ecou "i este 2"; ) switch ($ i) (caz 0: ecou "i este 0"; pauză; caz 1: ecou "i este 1"; pauză; caz 2: ecou "i este 2"; pauză;)
Exemplu # 2 Operator intrerupator poate fi comparat cu corzi
switch ($ i) (caz "măr": ecou "i este un măr"; pauză; caz "ciocolată": ecou "i este o ciocolată"; pauză; caz "plăcintă": ecou "i este o plăcintă"; pauză ;)

Este important să înțelegem modul în care operatorul intrerupator este executat pentru a evita erorile. Operator intrerupator execută linie cu linie (de fapt expresie prin expresie). La început, nu se execută niciun cod. Numai dacă operatorul este găsit caz a cărei valoare este aceeași cu valoarea expresiei din operator intrerupator, PHP începe să execute declarații. PHP continuă să execute declarații până la sfârșitul blocului intrerupator sau până când se întâlnește cu operatorul pauză... Dacă nu scrieți operatorul pauză la sfârșitul secțiunii de caz, PHP va continua să execute comenzile următoarei secțiuni de caz. De exemplu:

Comutator ($ i) (caz 0: ecou "i este 0"; caz 1: ecou "i este 1"; caz 2: ecou "i este 2";)

În acest exemplu, dacă $ i este 0, atunci PHP va executa tot ecoul! Dacă $ i este 1, PHP va executa ultimele două instrucțiuni de ecou. Veți obține comportamentul așteptat al operatorului (va fi afișat „i egal cu 2” numai dacă $ i este egal cu 2. Astfel, este important să nu uităm de operatori pauză(chiar dacă ați putea dori să evitați utilizarea acestuia în scopul propus în anumite circumstanțe).

În operator intrerupator expresia este evaluată o dată și acest rezultat este comparat cu fiecare operator caz... În expresie elseif, expresia este evaluată din nou. Dacă starea dvs. este mai complexă decât o simplă comparație și / sau este într-o buclă, construiți intrerupator poate alerga mai repede.

Lista instrucțiunilor care trebuie executate în secțiunea de caz poate fi, de asemenea, goală, ceea ce transferă pur și simplu controlul către lista de instrucțiuni din secțiunea de caz următoare.

Switch ($ i) (caz 0: caz 1: caz 2: ecou „i este mai mic de 3, dar nu negativ”; pauză; caz 3: ecou „i este 3”;)

Un tip special de construcție de caz este Mod implicit... Controlul ajunge aici atunci când niciuna dintre celelalte declarații de caz nu a fost declanșată. De exemplu:

Comutator ($ i) (caz 0: ecou "i este 0"; pauză; caz 1: ecou "i este 1"; pauză; caz 2: ecou "i este 2"; pauză; implicit: ecou "i nu este 0 , 1 sau 2 ";)

Expresie în operator caz poate fi orice expresie care este aruncată la un tip simplu, adică la un tip întreg sau la un tip cu virgulă mobilă (float) sau un șir. Matricile sau obiectele nu pot fi utilizate aici până când nu sunt dereferențiate la un tip simplu.

Este posibilă o sintaxă alternativă pentru structura de control a comutatorului. Pentru mai multe detalii, consultați Sintaxa alternativă pentru structurile de control.

Comutator ($ i): caz 0: ecou „i este 0”; pauză; caz 1: ecoul „i este 1”; pauză; caz 2: ecoul „i este 2”; pauză; implicit: ecoul „i nu este egal cu 0, 1 sau 2”; comutator final;

Este posibil să utilizați un punct și virgulă în loc de două puncte după declarația de caz. De exemplu:

Switch ($ bere) (carcasă "tuborg"; carcasă "carlsberg"; carcasă "heineken"; ecou "Alegere bună"; pauză; implicit; ecou "Vă rugăm să faceți o nouă alegere ..."; pauză;)

Instrucțiunea switch este similară cu constructul IF ELSEIF ELSE și vă permite să efectuați acțiuni diferite în funcție de valoare.

În următorul cod, puteți vedea cum se poate rezolva aceeași problemă folosind if și switch:

Construcția comutatorului folosește o comparație liberă ==.

În paranteze, punem o valoare care va fi comparată cu restul. Apoi vine cazul, valoarea de comparat și două puncte. Apoi, există comenzile care trebuie executate. Blocul implicit se va executa dacă nu se execută niciun bloc de cazuri.

Instrucțiunea de întrerupere întrerupe executarea curentă a comutatorului. Faptul este că comutatorul execută toate comenzile la rând, chiar dacă acestea sunt în blocuri de cazuri diferite:

"; caz 2: ecou" Stare: Livrat
"; pauză; caz 3: ecou" Stare: Finalizat
"; pauză;)?>

Rezultat în browser:

Stare: Procesare Stare: Livrat

După cum puteți vedea, au fost executate 2 blocuri de cazuri. Prima este pentru că se potrivește condiției, a doua este pentru că nu există nicio pauză în primul bloc.

Mai multe valori în CASE

De asemenea, într-un comutator, puteți utiliza un bloc de cod pentru mai multe valori:

De obicei, alegerea între dacă și comutare se face numai pe baza preferințelor dezvoltatorului. Personal, nu folosesc niciodată swtich doar pentru că dacă-altceva construieșteÎmi place mai mult dacă-altfel.