Condizione if
Una delle funzioni comuni alla maggior parte dei linguaggi è la condizione
if, che in italiano significa
se e permette al php di fare delle scelte davanti a strade differenti.
Supponiamo di avere due vie possibili da percorrere e che a seconda della condizione fosse necessario sceglierne obbligatoriamente una,
if è la parola che ci permettere di dichiarare a priori quale strada scegliere.
Analizziamo questo codice:
<?
$a = True;
$b = False;
if ($a) {
print "La variabile $a è vera";
}
if ($b) {
print "La variabile $b è falsa";
}
?>
Avviandolo ci apparirà a video la frase
La variabile $a è vera, mentre non ci apparirà
La variabile $b è falsa, questo perchè
if ha filtrato nel primo caso
$a che, essendo vera, ha permesso l'esecuzione di tutto quello che si trova tra le parentesi graffe successive, mentre nel caso in cui il controllo viene effettuato su
$b il codice presente tra le graffe viene ignorato perchè la variabile in questo caso è falsa.
Per quanto riguarda la sintassi la condizione
if non necessita di punto e virgola alla chiusura se utilizziamo le graffe, mentre nei casi in cui l'azione sia solamente una è possibile ommetterle utilizzando nuovamente il punto e virgola, ad esempio:
if ( true ) print " testo ";
Operatori di confronto
Prima di proseguire è necessaria la conoscenza dei significati dei seguenti operatori, che ci permettono di valutare le variabili tramite il TRUE è il FALSE:
| $a == $b |
Uguale rende True se $a è uguale a $b |
| $a === $b |
Identico Rende True se $a è uguale a $b e se le variabili sono dello stesso tipo |
| $a != $b |
Diversi Rende True se $a è diverso da $b |
| $a <> $b |
Diversi Rende True se $a è diverso da $b |
| $a !== $b |
Non Identici Rende True se $a è diverso da $b o se non sono dello stesso tipo |
| $a < $b |
Rende true se $a è minore di $b |
| $a <= $b |
Rende True se $a è minore o uguale a $b |
| $a > $b |
Rende true se $a è maggiore di $b |
| $a >= $b |
Rende True se $a è maggiore o uguale a $b |
Se noi uniamo la condizione if agli operatori di confronto otteniamo un sistema che ci permette la diversificazione delle azioni a seconda dei casi.
<?
$a = mt_rand( 0, 10 );
if ( $a < 5 ) {
print "La variabile $a è minore di 5";
}
if ( $a > 5 ) {
print "La variabile $a è maggiore di 5";
}
if ( $a == 5 ) {
print "La variabile $a è uguale a 5";
}
?>
La prima parte del codice setta la variabile
$a con l'aiuto della funzione
mt_rand che sceglie casualmente un numero tra i valori compresi nelle parentesi il primo numero, nel nostro caso lo 0, e il secondo, quindi 10. In questo modo rieseguendo il codice
$a muterà sempre il suo valore casualmente.
Se
$a è minore di 5 il primo script verrà eseguito perchè la condizione risulta vera, quindi
True, gli altri due controlli
if verranno ignorati perchè falsi.
Possiamo fare lo stesso discorso nei casi delle stringhe:
<?
$a = "test";
if ( $a == "test" ) {
print "La variabile $a è 'test'";
}
if ( $a != "test" ) {
print "La variabile $a non è 'test'";
}
?>
Anche in questo caso il controllo
if che attiverà il codice contenuto tra le graffe sarà il primo, perchè nella riga in testa abbiamo settato
$a col valore di
test mentre verrà salatato il secondo perchè
$a non è diverso da
test.
Operatori logici
| $a and $b |
Rende true se sia $a sia $b sono true |
| $a && $b |
Rende true se sia $a sia $b sono true |
| $a or $b |
Rende true se o $a o $b è true |
| $a || $b |
Rende true se o $a o $b è true |
| $a xor $b |
Rende true se o $a o $b è true, ma non entrambi |
| !$a |
Rende True se $a non è True |
Grazie agli operatori logici possiamo agire in casi in cui si necessiti di 2 o più condizioni:
<?
$a = 1;
$b = 1;
if ( $a == 1 && $b == 0 ) {
print "$a è uguale a 1 e $b è uguale a 0";
}
if ( $a == 1 && $b == 1 ) {
print "$a è uguale a 1 e $b è uguale a 1";
}
?>
La condizione che risulterà vera e quindi verrà eseguita sarà nell'ordine la seconda, dove viene verificato se
$a è uguale a 1 e se
$b è uguale a 1, l'operatore
&& o
and richiede che entrambi siano veri per poter restituire
True, avendo settato a inizio codice le due variabili a 1 otterremo la stampa della frase
$a è uguale a 1 e $b è uguale a 1.
else
Vediamo un'altra parte della funzione
if:
<?
$a = "prova";
if ( $a == "test" ) {
print "La variabile $a è 'test'";
}
else
{
print "La variabile $a non è 'test'";
}
?>
se volessimo leggere in italiano questo script partendo dall'
if potremmo dire
se $a è uguale a 'test' scrivi "La variabile $a è 'test'" altrimenti scrivi "La variabile $a non è 'test'",
else ha il compito di far eseguire tutto quello che si trova nelle graffe che ne seguono solo se l'
if di appartenenza è risultato
False. Nel caso in esame, dato che questa volta
$a è stato eguagliato a
prova, ci verrà stampata a video la frase
La variabile $a non è 'test'.
else if
<?
$a = "mela";
if ( $a == "pera" )
{
print "La variabile $a è una pera";
}
else if ( $a == "pesca" )
{
print "La variabile $a è una pesca";
}
else if ( $a == "mela" )
{
print "La variabile $a è una mela";
}
?>
else if ha bisogno di 2 condizioni per permettere l'elaborazione del codice tra le graffe, la prima è che le precedenti condizioni appartenenti allo stesso gruppo siano risultate tutte false e la seconda è che la condizione presente alla sua destra sia vera, ecco perchè è facile intuire che il codice qui sopra ci restituirà a video la scritta
La variabile $a è una mela.