In questa lezione della nostra Guida PHP impareremo a gestire il comportamento del nostro script sulla base del verificarsi o meno di determinate condizioni: qualora una data condizione si verifichi (sia vera) il codice si comporterà in un modo, nel caso contrario (falsa) si comporterà in un altro.
Tutto ciò è possibile mediante le istruzioni condizionali, una sintassi che rientra tra le cosiddette strutture di controllo del linguaggio. Vediamo, quindi, cosa sono e come funzionano le istruzioni condizionali in PHP.
If…else
La principale di queste strutture di controllo è il costrutto if..else (in italiano "se"…"altrimenti"). La struttura logica del suo funzionamento è davvero banale e ricalca totalmente la logica del comune utilizzo grammaticale della particella ipotetica "se".
Facciamo un esperimento: traduciamo in PHP la frase "se piove resto a casa":
<?php
//specifico il valore della variabile $tempo
$tempo = "piove";
//Costruisco la condizione
if ($tempo == "piove"){
echo "resto a casa";
}
?>
Nel codice qui sopra la condizione si realizza e quindi "resto a casa" ๐
Si noti che questa semplicissima condizione avrebbe potuto essere scritta anche su una sola linea, pertanto senza utilizzare le parentesi graffe:
if ($tempo == "piove") echo "resto a casa";
Le parentesi graffe, nfatti, sono utilizzate per racchiudere una pluralità di istruzioni all’interno del medesimo blocco logico.
Nota: se nella vostra tastiera non figurano le parentesi graffe usate i tasti sui quali sono raffigurate le parentesi quadre, tenendo premuto ALT GR + il tasto per le maiuscole.
Ora facciamo un altro passo ancora e traduciamo in codice questa frase: "se piove resto a casa, altrimenti vado al parco":
<?php
//specifico il valore della variabile $tempo
$tempo = "sole";
//Costruisco la condizione
if ($tempo == "piove"){
echo "resto a casa";
}else{
echo "vado al parco";
}
?>
Nota: ricordatevi la differenza tra "=" e "==". Il primo è un operatore di assegnazione, il secondo è un operatore di confronto. Non confondeteli altrimenti non funzionerà nulla!
Anche questa volta poteva essere scritto tutto senza parentesi graffe:
if ($tempo == "piove") echo "resto a casa";
else echo "vado al parco";
Vediamo adesso qualcosa di ancora più complesso: "se piove e fa freddo resto a casa, se non fa freddo vado al bar. Se invece non piove vado al parco":
<?php
//specifico il valore della variabile $tempo
$tempo = "sole";
//...e quello della variabile $temperatura
$temperatura = "freddo";
//Costruisco la condizione
if ($tempo == "piove"){
if ($temperatura == "freddo"){
echo "resto a casa";
}else{
echo "vado al bar";
}
}else{
echo "vado al parco";
}
?>
Quello che abbiamo fatto è stato semplicemente costruire una struttura nidificata di condizioni o condizione annidata.
Nel codice qui sopra abbiamo creato una sorta di duplice livello di condizione (il secondo è spostato verso destra). Se la prima condizione si verifica se ne innesta una seconda. Qualora invece la prima condizione non dovesse verificarsi la seconda condizione non viene nemmeno verificata.
Switch
Gli stessi risultati del costrutto "if..else" si possono ottenere con il controllo switch.
Per capire meglio il funzionamento di switch passiamo subito ad un esempio pratico e traduciamo in codice questa frase: "se piove resto a casa, se c’è il sole vado al parco, in ogni altro caso vado al bar". Ecco il codice:
<?php
//specifico il valore della variabile $tempo
$tempo = "sole";
switch ($tempo) {
//se piove...
case 'piove':
echo "resto a casa";
break;
//se c'è il sole...
case 'sole':
echo "vado al parco";
break;
//negli altri casi...
default:
echo "vado al bar";
}
?>
L’istruzione "switch" prevede che venga idicata fra parentesi un’espressione che servirà come elemento discriminante (nel nostro caso la variabile $tempo); di seguito, tra parentesi graffe, scriviamo le diverse possibilità offerte dall’espressione iniziale: nel momento in cui ne viene trovata una "vera", PHP esegue il codice indicato di seguito, fino a quando non incontra un’istruzione "break".
Per finire (sempre tra le parentesi graffe) è possibile indicare il "default" che indica a PHP il comportamento da tenersi qualora nessuna delle condizioni indicate sopra si realizzi. L’indicazione "default" può anche essere assente, ma quando c’è deve essere l’ultima della switch.