Istruzione IF

La struttura di controllo o struttura condizionali IF è sicuramente tra quelle più conosciute ed usate.

Gli argomenti di questa pagina

  • IF
  • IF...ELSE
  • IF...ELSEIF
  • IF...ELSEIF...ELSE
  • IF nidificate

IF

L'istruzione IF viene utilizzata per eseguire del codice solo se una determinata condizione è vera, quindi permette l'esecuzione condizionata di frammenti di codice. Esegue una singola istruzione o di un gruppo di istruzioni se la condizione è vera. Non fa nulla se la condizione è falsa.

La sintassi è:
if (condition) {
codice da eseguire se condition è TRUE;
}

Un esempio:

La condizione della prima IF risulta VERA, quindi viene eseguito il blocco di codice
Ma la condizione della seconda IF è FALSA, quindi il blocco di codice non viene eseguito

1
2
3
4
5
6
7
8
9
10
<?php
$nome 
"Rossi";
if (
$nome == "Rossi") {
    echo 
"Il nome è giusto<br />\n";
}
echo 
"<hr />\n";
if (
$nome == "Bianchi") {
    echo 
"Il nome è giusto<br />\n";
}
?>

Il nome è giusto

 

IF...ELSE

Ma non sempre è sufficiente eseguire blocchi di codice solo se una condizione è vera. Sarebbe necessario eseguire un blocco di codice alternativo anche se la condizione è falsa. In questo caso lo statement (dichiarazione) ELSE.

La sintassi è:
if (condition) {
codice da eseguire se condition è TRUE;
} else {
codice da eseguire se condition è FALSE;
}

Il secondo esempio:

Nel primo costrutto della IF...ELSE la condizione risulta VERA, quindi viene eseguito il primo blocco della IF.
Nel secondo costrutto della IF...ELSE la condizione risulta FALSA, quindi viene eseguito il secondo blocco della IF.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$nome 
"Rossi";
if (
$nome == "Rossi") {
    echo 
"Il nome è giusto<br />\n";
} else {
    echo 
"Il nome è sbagliato<br />\n";
}
echo 
"<hr />\n";
if (
$nome == "Bianchi") {
    echo 
"Il nome è giusto<br />\n";
} else {
    echo 
"Il nome è sbagliato<br />\n";
}
?>

Il nome è giusto

Il nome è sbagliato

 

IF...ELSEIF

Si possono verificare altre situazioni da valutare e cioè dovremmo essere nella necessità se possa esistere una seconda o terza condizione da verificare se la precedente condizione fallisse. Lo statement che il PHP ci mette a disposizione è ELSEIF.

La sintassi è:
if (condition_1) {
codice da eseguire se condition_1 è TRUE;
} elseif (condition_2) {
codice da eseguire se condition_2 è TRUE;
}

Il terzo esempio:

Nel primo costrutto IF...ELSEIF risulta VERO il primo blocco, quindi è questo che viene eseguito.
Nel secondo costrutto IF...ELSEIF nessuno dei due blocchi risulta VERO, quindi non viene eseguito nessuno dei due blocchi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$nome 
"Rossi";
if (
$nome == "Rossi") {
    echo 
"Primo blocco per Rosssi<br />\n";
} elseif (
$nome == "Bianchi") {
    echo 
"Secondo blocco per Bianchi<br />\n";
}
echo 
"<hr />\n";
if (
$nome == "Bianchi") {
    echo 
"Primo blocco per Bianchi<br />\n";
} elseif (
$nome == "Neri") {
    echo 
"Secondo blocco per Neri<br />\n";
}
?>

Primo blocco per Rosssi

 

IF...ELSEIF...ELSE

Dopo aver tentato di eseguire un blocco di codice se tra le varie condizioni ce ne fosse una vera, potremmo essere ancora nella necessità di eseguire un blocco di codice nel caso che tutte le condizioni risultano false. In questo caso alla fine di tutti gli statement ELSEIF possiamo ricorrere allo statement ELSE.

La sintassi è:
if (condition_1) {
codice da eseguire se condition_1 è TRUE;
} elseif (condition_2) {
codice da eseguire se condition_2 è TRUE;
} else {
codice da eseguire se tutte le condition risultano FALSE
}

Il quarto esempio:

Uno dei blocchi deve essere eseguito, sia che una delle condizioni risulti VERA, sia che tutte le condizioni risultino FALSE.
Quindi in caso di fallimento viene eseguito il blocco ELSE.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$nome 
"Rossi";
if (
$nome == "Rossi") {
    echo 
"Primo blocco per Rosssi<br />\n";
} elseif (
$nome == "Bianchi") {
    echo 
"Secondo blocco per Bianchi<br />\n";
} else {
    echo 
"Nessuno dei blocchi precedenti soddisfa la condizione<br />\n";
    echo 
"Quibdi viene eseguito il blocco ELSE<br />\n"
}
echo 
"<hr />\n";
if (
$nome == "Bianchi") {
    echo 
"Primo blocco per Bianchi<br />\n";
} elseif (
$nome == "Neri") {
    echo 
"Secondo blocco per Neri<br />\n";
} else {
    echo 
"Nessuno dei blocchi precedenti soddisfa la condizione<br />\n";
    echo 
"Quibdi viene eseguito il blocco ELSE<br />\n"
}
?>

Primo blocco per Rosssi

Nessuno dei blocchi precedenti soddisfa la condizione
Quibdi viene eseguito il blocco ELSE

 

IF nidificate

Se oltre a verificare lo stato di una condizione, volessimo eseguire controlli su altre, è possibile nidificare due IF. Ma occorre prestare attenzione ad aprire e chiudere correttamente il ciclo esterno e gli altri cicli interni.
Per questo motivo è buona norma scrivere il codice con meticolosa cura usando una buona indentatura come visibile nel codice sottostante.

Nell'esempio che segue:
Nel ciclo esterno controllo se l'infisso è una finestra o non è una finestra.
Solo se è una finestra viene eseguito il ciclo interno per controllare se è di legno o non è di legno.
Nel secondo esempio eseguo le stesse operazioni controllando se l'infisso è una serranda.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$infisso 
"finestra";
$materiale "legno";
if (
$infisso == "finestra"){
    if (
$materiale == "legno"){
        echo 
"Protegge meglio da sbalzi di temperatura<br />\n";
    } else {
        echo 
"Non isola bene<br />\n";
    }
} else {
    echo 
"Non è una finestra";
}
echo 
"<hr />\n";
if (
$infisso == "serranda"){
    if (
$materiale == "metallo"){
        echo 
"Protegge dai ladri<br />\n";
    } else {
        echo 
"Non protegge bene<br />\n";
    }
} else {
    echo 
"Non è una serranda<br />\n";
}
?>

Protegge meglio da sbalzi di temperatura

Non è una serranda

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum