Instrucțiunea switch în PHP
Când o singură valoare poate duce la mai multe acțiuni diferite, o instrucțiune switch le ține frumos organizate. PHP o folosește ca să aleagă un singur bloc de cod dintre mai multe și să îl ruleze.
Sintaxa switch
O instrucțiune switch este structurată așa:
<?php
switch (expression) {
case label1:
//code block
break;
case label2:
//code block
break;
case label3:
//code block
break;
default:
//code block
}
?>
Cum funcționează
PHP calculează expresia o singură dată, apoi compară rezultatul, pe rând, cu valoarea fiecărui case. Când găsește o potrivire, rulează codul pentru acel caz. Pune un break la sfârșitul fiecărui bloc, pentru că fără el PHP ar continua în cazul următor. Dacă nu se potrivește nimic, rulează în schimb blocul default.
Instrucțiunea switch cu culori
În funcție de ce conține $favcolor, se afișează un mesaj diferit. Aici are valoarea „red”:
Ieșire: script PHP
<?php
$favcolor = "red";
switch ($favcolor) {
case "red":
echo "Culoarea ta preferată este red!";
break;
case "blue":
echo "Culoarea ta preferată este blue!";
break;
case "green":
echo "Culoarea ta preferată este green!";
break;
default:
echo "Culoarea ta preferată nu este nici red, nici blue, nici green!";
}
?>
Cuvântul cheie default
Cuvântul cheie default marchează codul folosit când niciunul dintre cazuri nu se potrivește. Gândește-te la el ca la else-ul de la finalul unei instrucțiuni if...elseif...else.
switch cu ziua săptămânii
Acest switch transformă numărul zilei returnat de date("w") în numele zilei de azi:
Ieșire: script PHP
<?php
$d = date("w");
switch ($d) {
case 0:
echo "Duminică";
break;
case 1:
echo "Luni";
break;
case 2:
echo "Marți";
break;
case 3:
echo "Miercuri";
break;
case 4:
echo "Joi";
break;
case 5:
echo "Vineri";
break;
case 6:
echo "Sâmbătă";
break;
}
?>
Blocuri de cod comune
Mai multe cazuri pot folosi în comun același bloc de cod. Așază-le direct unul sub altul și omite break dintre ele. Această tehnică este numită uneori fall-through.
Fall-through în switch
Cazurile "red" și "blue" sunt așezate unul sub altul, așa că oricare dintre valori duce la același mesaj:
Ieșire: script PHP
<?php
$favcolor = "red";
switch ($favcolor) {
case "red":
case "blue":
echo "Culoarea ta preferată este fie red, fie blue!";
break;
case "green":
echo "Culoarea ta preferată este green!";
break;
default:
echo "Culoarea ta preferată nu este nici red, nici blue, nici green!";
}
?>