switch / match în PHP

Structuri de control PHP 4+ (match: PHP 8.0+)

Alege un bloc de cod în funcție de valoarea unei variabile. match este varianta modernă, mai scurtă.

Sintaxă
switch (valoare) { case x: ...; break; default: ...; }

Ce face switch / match

switch compară o valoare cu mai multe cazuri (case). Este o alternativă mai ordonată la multe elseif-uri. Fiecare caz se termină de obicei cu break.

Din PHP 8 există match: returnează o valoare, compară strict (===) și nu are nevoie de break.

Exemple

Exemplul 1: switch clasic

<?php
$zi = "sâmbătă";

switch ($zi) {
    case "sâmbătă":
    case "duminică":
        echo "Weekend";
        break;
    default:
        echo "Zi lucrătoare";
}

Rezultat

Weekend

Exemplul 2: match (PHP 8+)

<?php
$cod = 404;

$mesaj = match ($cod) {
    200 => "OK",
    301, 302 => "Redirecționare",
    404 => "Pagina nu există",
    default => "Altă eroare",
};

echo $mesaj;

Rezultat

Pagina nu există

Greșeli frecvente

  • Uiți break într-un switch. Codul continuă în cazul următor și rulează și acel bloc.
  • Un match fără default aruncă eroarea UnhandledMatchError dacă nicio valoare nu se potrivește.

Comenzi înrudite

  • if / else: Execută un bloc de cod doar dacă o condiție este adevărată.