Eccoci infine arrivati alla struttura di controllo piú importante e piú usata. Grazie a questa struttura possiamo selezionare quali frammenti di codice verranno eseguiti.
La sintassi della struttura if
in PHP è identica a quella del C. If
valuta un’espressione che deve ritornare TRUE
o FALSE
.
Se il valore ritornato è TRUE
il frammento di codice viene eseguito altrimenti viene ignorato e il programma continua così per il suo flusso naturale.
Se il risultato dell’espressione data in pasto alla if
non appartiene al tipo boolean questo viene convertito seguendo alcune semplici regole.
If considera FALSE
i seguenti valori:
- il valore 0 di un integer;
- il valore 0.0 di un float;
- la stringa vuota e la stringa ‘0’;
- un
array
con zero elementi; - un oggetto con zero variabili;
- il valore speciale
NULL
; - variabili non esistenti.
In generale quindi se un valore non è tra quelli riportati qui sopra viene considerato come TRUE
. Un caso a parte sono i tipi resource che vengono considerati TRUE
in ogni caso.
<?php /* esempio di istruzione if */ if ($a >= 10) $a++; /* alcuni esempi con variabili di tipo diverso dalla boolean */ $bfloat = 3.14; $bint = 0; $bstr = '1'; if ($bfloat) $bfloat++; // questa istruzione viene eseguita if ($bint) $bint = $bint + 9; // questa istruzione non è eseguita if ($bstr) { /* queste istruzioni vengono eseguite. */ $bstr = $bint . ' ciao '; $bstr .= $bfloat; echo $bstr; } ?>
Spesso può capitare di dover scegliere tra due alternative, due possibili strade. Ad esempio sommare 4 ad una variabile se questa è minore di 40 altrimenti sommargli 1.
Con un solo if
ci risulta impossibile ma grazie ad else
possiamo estendere if
e riuscire così a risolvere il nostro problema.
L’istruzione else
esegue infatti un determinato frammento di codice se e solo se l’espressione del if
a cui è associata ha dato come risultato FALSE
.
Da notare come quando ci si trova di fronte a problemi di questo tipo può essere utile usare l’operatore ternario di scelta condizionata.
<?php /* esempio di if/else */ if ($a < 40){ $a += 4; // finche $a è minore di 40 somma 4 } else { $a +=1; // quando si supera 40 si somma solo 1 } /* stesso esempio con l'operatore ternario */ $a += ($a < 40) ? 4 : 1; ?>
Ora che abbiamo risolto il problema delle due alternative proviamo complicarlo un po’.
Supponiamo quindi di avere 4 alternative tra cui scegliere e 4 frammenti di codice diverso da eseguire, uno per ogni alternativa possibile.
Utilizzando i soli if
ed else
non riusciremmo a risolvere il problema facilmente. E’ proprio qui che elseif
ci viene in aiuto.
Questo costrutto molto simile ad else
esegue un frammento di codice se è solo se quello della if
non è stato eseguito inoltre ci permette di imporre nuove condizioni.
Notate che non esistono limitazioni in quando a numeri di elseif
possono essere associati ad un if
.
Elseif
ed else
possano essere usati contemporaneamente ma l’else
deve sempre essere uno solo e l’ultimo della lista.
<?php /* esempio di if/elseif/else */ $ris = cos (1) * 10; if (($ris >= 0) && ($ris < 1)){ echo "tra 0 e 1"; }elseif (($ris >= 1 ) && ($ris < 10)){ echo "tra 1 e 10"; }elseif (($ris >= 10 ) && ($ris < 11)){ echo "tra 10 e 11"; }else{ echo "altri valori"; } /* quale stringa viene stampata ? */ ?>
Quando usate if
/elseif
ed else
fate sempre particolarmente attenzione ai vari simboli di maggiore, minore e le loro contro parti con l’uguale.
Spesso si fanno errori come includere lo stesso valore in due alternative differenti. Questo porta ad errori difficili da scovare e comportamenti del codice completamente a caso.
vicius
Commenti recenti