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