Luigi Arlotta
a- a+

Il Costrutto If... Then... Else...

Il costrutto if (a) then (b) else (c), tramite il qualeè possibile controllare il flusso del programma, ha inPHP la seguente sintassi:

 

if (condizione)istruzione1;elseistruzione2;

 

La condizione generalmente consiste nel comparare unavariabile con una costante o due variabili tra loro. Se lacondizione risulta vera (cioè restituisce il valoretrue) allora viene eseguita istruzione1 altrimenti vieneeseguita istruzione2.

Vediamo subito un esempio. Il seguente codice:


$Surname = "Bit";if ($Surname == "Bit")echo ("Hello, Mr. Bit!");elseecho ("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 usodegli 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
Tab.5.1: Operatori di confronto

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 unconfronto. Questo tipo di errore altera gravemente il flussologico del programma. Osservate le seguenti righe:

 

if ($Lastname = = "Bit") echo "Hello, Mr. Bit!";$Lastname = "Bit";

 

La prima istruzione viene interpretata come un confronto erestituisce il valore vero se la variabile $Lastname contieneil valore "Bit" , falso altrimenti. La secondaistruzione invece assegna il valore "Bit" allavariabile $Lastname.

Volendosi complicare la vita, PHP propone alcuni metodialternativi per rappresentare un'istruzioneif...then...else... Qui verranno menzionati solo a fini dicompletezza.

if (condizione) : ?>
istruzione1 in HTML

istruzione2 in HTML

Questa prima forma alternativa consente di definire un bloccodi istruzioni HTML che verrà eseguito solo se laprecedente condizione risulta vera. Il blocco viene conclusodall'istruzione endif.
Il codice PHP che segue è funzionalmente analogo aquello visto all'inizio del capitolo, ma appareevidentemente 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 epreferite evitare le parentesi graffe potete ancora far usodella parola chiave endif come mostrato di seguito.

 

if (condizione)istruzione1;endif;

 

Quando siamo interessati ad analizzare non più unasola, ma più condizioni prima di decidere qualeistruzione eseguire, possiamo far uso della parola chiaveelseif che ci consente di indicare una serie di condizioniche verranno analizzate una ad una in ordine sequenziale.Ogni condizione viene testata solo se tutte le precedentisono risultate false. Se una condizione risulta vera tutte lecondizioni successive, sia vere che false, non verranno presein considerazione. Questo genere di costrutto viene spessoindicato col nome di catenaif…then…else… Di seguito èriportato un esempio.

[pending: esempio if... elseif... esleif... else ]

Il costrutto IF (a) THEN (b) ELSE (c) viene completatodall'utilizzo degli operatori booleani AND, OR e NOT.Tali operatori sono espressi in PHP tramite la sintassiriportata in tabella 5.2.

&& AND
|| OR
^ XOR
! NOT
Tab.5.2: Operatori booleani

Probabilmente conoscerete il funzionamento delle tavole diverità che comunque sono riportate nella tabella5.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
Tab.5.3: Tavole di verità