Treci la conținutul principal

Expresia match în PHP

PHP 8.0 a adăugat expresia match, o rudă apropiată a lui switch. Există trei diferențe principale: produce o valoare, compară folosind comparația strictă (===) și nu are nevoie de instrucțiuni break.

Expresie match de bază

Valoarea lui $status decide ce șir de caractere returnează match, iar acel șir este stocat în $text:

Prompt
Scrieți un script PHP care setează o variabilă $status la 1. Folosiți o expresie match pentru a atribui un șir de caractere variabilei $text: 1 corespunde cu „Pe locuri”, 2 corespunde cu „Fiți gata”, 3 corespunde cu „Start”. Afișați $text.
Ieșire: script PHP

Cuvântul cheie default

O ramură default prinde tot ce nu prind celelalte ramuri. Merită adăugată, pentru că, dacă nicio ramură nu se potrivește și nu există default, PHP aruncă o eroare UnhandledMatchError.

Match cu default

Nicio ramură nu acoperă valoarea 5, așa că ramura default furnizează rezultatul:

Prompt
Scrieți un script PHP care setează o variabilă $status la 5. Folosiți o expresie match cu o ramură default. Cazurile 1, 2, 3 corespund cu „Pe locuri”, „Fiți gata”, „Start”, respectiv. Ramura default corespunde cu „Necunoscut”. Afișați rezultatul.
Ieșire: script PHP

Mai multe valori într-o ramură

O ramură poate acoperi mai multe valori: scrie-le separate prin virgule. Ramura este aleasă dacă expresia se potrivește cu oricare dintre ele.

Match cu mai multe valori

Aici zilele sunt grupate în trei ramuri, cu virgule între valorile din fiecare:

Prompt
Scrieți un script PHP care setează o variabilă $day la 2. Folosiți o expresie match în care zilele 1 și 2 corespund cu „Început de săptămână lucrătoare”, zilele 3, 4 și 5 corespund cu „Mijloc/final de săptămână lucrătoare”, iar zilele 6 și 7 corespund cu „Weekend”. Afișați rezultatul.
Ieșire: script PHP

Comparație strictă

Pentru că match compară cu ===, o valoare trebuie să aibă atât tipul de date corect, cât și conținutul corect. O instrucțiune switch este mai permisivă, deoarece compară lax (==).

Comparație strictă cu match

Șirul de caractere "1" nu se potrivește cu întregul 1 la o comparație strictă, așa că este folosită ramura default:

Prompt
Scrieți un script PHP care setează o variabilă $status la „1” (un șir de caractere). Folosiți o expresie match în care numărul întreg 1 corespunde cu „Potrivire cu întreg”. Adăugați o ramură default care corespunde cu „Nicio potrivire”. Afișați rezultatul pentru a arăta că match folosește comparație strictă.
Ieșire: script PHP