back to top

PHP if, else e switch โ€“ Le istruzioni condizionali

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.

Pubblicitร 

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.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).