Corsi on-line

Le condizioni: if, else e switch

  • CommentiScrivi un commento
  • ForumDiscuti sul forum
  • PrevOperatori di confronto e operatori logici
  • NextI cicli: for, while e do while

Questa lezione del nostro breve corso su PHP è davvero fondamentale! Vedremo infatti come 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ò è realizzato mediante quelle che, nel titolo di questa lezione, abbiamo chiamato "condizioni" anche se, in realtà, è decisamente più corretto parlare di strutture di controllo o strutture condizionali.

L'articolo continua dopo la 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.

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.

Corsi
  • Corso Linux
    Corso Linux
    Guida completa al sistema open-source. A partire da 39 €
  • Corso MySQL
    Corso MySQL
    Gestione del database open-source. A partire da 39 €
  • Corso PHP
    Corso PHP
    Creare siti web dinamici avanzati con PHP e MySQL. A partire da 39 €
Vedi anche...
Altre Guide