Il costrutto if è uno dei più importanti di ogni linguaggio, PHP incluso. Ci permetterà di eseguire delle operazioni solo se un tale condizione è vera, cioè TRUE. Naturalmente, se la condizione risulta FALSE, verrà ignorato.

<?php
    
    //se il contenuto di $a è maggiore di quello di $b ci sarà un output
    if ($a > $b) {
        echo "$a è maggiore di $b";
    }
    
?>

Possiamo annidare infiniti costrutti if.

<?php
    

    if ($a > $b) {
        if ($a > 10) {
            echo "$a è maggiore di $b e maggiore di 10";
        }
    }
    
?>

Se, come abbiamo visto, delle istruzioni possono essere eseguite quando una tale condizione è TRUE, è possibile eseguire altre istruzioni quando non lo è.

<?php
    
    $a = 10;
    $b = 20;

    if ($a > $b) {
        echo "$a è maggiore di $b";
    } else {
        echo "$a è minore di $b";
    }
    
?>
Output: 10 è minore di 20

PHP offre la combinazione if-elseif. Se la prima condizione if è FALSE, possiamo inserire un elseif con una sua condizione, che se risulta TRUE viene eseguita, altrimenti verrà eseguito else. Sembra complicato, ma nella pratica non lo è.

<?php
    
    $a = 10;
    $b = 20;

    if ($a > $b) {
        echo "$a è maggiore di $b";
    } elseif ($a == $b) {
        echo "$a è uguale a $b";
    } else {
        echo "$a è minore di $b";
    }
    
?>

È possibile usare molteplici elseif, ricordiamoci soltanto di inserire un else finale.

<?php
    
    $a = 10;
    $b = 20;

    if ($a >= $b) {
        echo "$a è maggiore o uguale a $b";
    } elseif ($a == 7) {
        echo "$a è uguale a 7";
    } elseif ($a == 8) {
        echo "$a è uguale a 8";
    } else {
        echo "$a è minore di $b";
    }
    
?>

Spesso ci capita di dover confrontare la stessa variabile con molti valori, per questo scopo la soluzione migliore è il costrutto switch.

<?php
    
    $a = 0;
    
    switch($a) {
        case 0:
            echo "a è uguale a 0";
            break;
        case 1:
            echo "a è uguale a 1";
            break;
        case "luca":
            echo "a è luca";
            break;
    }

    
?>

Attenzione: è fondamentale inserire l’istruzione break, altrimenti, pur avendo trovato una espressione TRUE (in questo caso $a è uguale 0), l’esecuzione continua fino alla fine e non viene bloccata!

Un caso speciale è default, che viene eseguito se nessuna delle altre condizioni risulta TRUE:

<?php
    
    $a = 10;
    
    switch($a) {
        case 0:
            echo "a è uguale a 0";
            break;
        case 1:
            echo "a è uguale a 1";
            break;
        case "luca":
            echo "a è luca";
            break;
        default:
            echo "nessuna delle altre.";
    }

    
?>