Il Costrutto If... Then... Else...
Il costrutto if (a) then (b) else (c), tramite il quale è possibile controllare il flusso del programma, ha in PHP la seguente sintassi:
if (condizione) istruzione1; else istruzione2;
La condizione generalmente consiste nel comparare una
variabile con una costante o due variabili tra loro. Se la
condizione risulta vera (cioè restituisce il valore
true) allora viene eseguita istruzione1 altrimenti viene
eseguita istruzione2.
Vediamo subito un esempio. Il seguente codice:
$Surname = "Bit";
if ($Surname == "Bit")
echo ("Hello, Mr. Bit!");
else
echo ("Who are you?");
?>
fornirà l'output:
Hello, Mr. Bit!
In quanto la prima condizione risulta subito verificata.
Per eseguire confronti tra variabili e/o costanti si fa uso degli operatori di confronto, la cui sintassi PHP è riportata in tab.5.1
| = = | Uguale a |
| > | Maggiore di |
| < | Minore di |
| != | Diverso da |
| >= | Maggiore o uguale a |
| <= | Minore o uguale a |
Fate attenzione all'operatore "uguale a" che è espresso da due simboli "=" (uguale) affiancati ("=="). Uno degli errori più comuni commessi dai programmatori, non solo in PHP, è quello di dimenticare un "=" nell'eseguire un confronto. Questo tipo di errore altera gravemente il flusso logico del programma. Osservate le seguenti righe:
if ($Lastname = = "Bit") echo "Hello, Mr. Bit!"; $Lastname = "Bit";
La prima istruzione viene interpretata come un confronto e restituisce il valore vero se la variabile $Lastname contiene il valore "Bit" , falso altrimenti. La seconda istruzione invece assegna il valore "Bit" alla variabile $Lastname.
Volendosi complicare la vita, PHP propone alcuni metodi alternativi per rappresentare un'istruzione if...then...else... Qui verranno menzionati solo a fini di completezza.
if (condizione) : ?>
istruzione1 in HTML
istruzione2 in HTML
Questa prima forma alternativa consente di definire un blocco
di istruzioni HTML che verrà eseguito solo se la
precedente condizione risulta vera. Il blocco viene concluso
dall'istruzione endif.
Il codice PHP che segue è funzionalmente analogo a
quello visto all'inizio del capitolo, ma appare
evidentemente più complesso:
$Surname = "Bit"; if ($Surname == "Bit"): ?> Hello, Mr. Bit! Who are you?
L'output sarà sempre:
Hello, Mr. Bit!
Se istruzione1 è un'istruzione composta e preferite evitare le parentesi graffe potete ancora far uso della parola chiave endif come mostrato di seguito.
if (condizione) istruzione1; endif;
Quando siamo interessati ad analizzare non più una sola, ma più condizioni prima di decidere quale istruzione eseguire, possiamo far uso della parola chiave elseif che ci consente di indicare una serie di condizioni che verranno analizzate una ad una in ordine sequenziale. Ogni condizione viene testata solo se tutte le precedenti sono risultate false. Se una condizione risulta vera tutte le condizioni successive, sia vere che false, non verranno prese in considerazione. Questo genere di costrutto viene spesso indicato col nome di catena if…then…else… Di seguito è riportato un esempio.
[pending: esempio if... elseif... esleif... else ]
Il costrutto IF (a) THEN (b) ELSE (c) viene completato
dall'utilizzo degli operatori booleani AND, OR e NOT.
Tali operatori sono espressi in PHP tramite la sintassi
riportata in tabella 5.2.
| && | AND |
| || | OR |
| ^ | XOR |
| ! | NOT |
Probabilmente conoscerete il funzionamento delle tavole di
verità che comunque sono riportate nella tabella
5.3.
| a | b | a AND b | a OR b | NOT a |
| Vero | Vero | Vero | Vero | Falso |
| Vero | Falso | Falso | Vero | Falso |
| Falso | Vero | Falso | Vero | Vero |
| Falso | Falso | Falso | Falso | Vero |