Nella lezione relativa alle espressioni abbiamo introdotto l'operatore di incremento ++
che aumenta di un'unità il valore della variabile a cui viene associato. Questo operatore è soltanto uno tra quelli messi a disposizione da PHP per effettuare operazioni aritmetiche. Vediamo insieme nel dettaglio quali sono gli altri e qual'è il loro funzionamento.
Iniziamo ovviamente dai più semplici, quelli più intuitivi che sicuramente già conosciamo:
$a = 1 + 1; // operatore di somma
$b = 1 - 1; // operatore di sottrazione
$c = 1 * 1; // operatore di moltiplicazione
$d = 2 / 1; // operatore di divisione
Oltre alle quattro semplici operazioni matematiche precedentemente descritte abbiamo a disposizione anche l'operatore modulo, il quale restituisce il resto di una divisione, come nell'esempio seguente:
$e = 5 % 2; // 5 diviso 2 = 2 con il resto di 1 => $e = 1
L'operatore modulo è spesso utilizzato per determinare se un valore è pari o dispari:
$e = 5;
if(($e % 2) == 0) {
echo "5 è pari";
else {
echo "5 è dispari";
}
In questo caso la condizione stamperà a schermo 5 è dispari
dato che il resto dell'operazione è 1 e non 0. La condizione appena proposta all'interno dell' if
è un operatore booleano che tratteremo approfonditamente nella prossima lezione. Per ora utilizziamo invece l'esempio anche per introdurre un'altra regola di priorità: le parentesi ()
. Queste ultime modificano la priorità delle operazioni in un'espressione proprio come accade nella matematica, valutando prima il valore in esse contenuto e poi il resto dell'espressione. Nel nostro caso viene prima valutato il valore del modulo e poi eseguito il resto dell'espressione.
Tornando agli operatori aritmetici introdotti in questa lezione, essi possono essere utilizzati non solo tra valori scalari ma anche con variabili e funzioni, come già mostrato nella lezione delle espressioni:
$a = 1 + 1;
$b = 4 - 2;
$b = $b + $a; // 2 + 2 = 4
Nell'esempio appena visto possiamo notare la situazione in cui il risultato di un'espressione viene assegnato come risultato alla variabile stessa. La variabile $b
, quindi, viene modificata sommando il suo valore iniziale al valore di $a
. La stessa espressione può essere riscritta utilizzando gli operatori di assegnazione combinati:
$b += $a; // equivale a $b = $b + $a
Tali operatori possono essere utilizzati con tutte le operazioni aritmetiche finora descritte:
$b += $a; // $b = $b + $a
$b -= $a; // $b = $b - $a
$b *= $a; // $b = $b * $a
$b /= $a; // $b = $b / $a
$b %= $a; // $b = $b % $a
Gli ultimi due operatori aritmetici li abbiamo già analizzati ad inizio lezione e in quella precedente, stiamo parlando degli operatori di incremento e decremento.
$i = 0;
++$i; // incrementa di 1 la variabile $i
$i++; // incrementa di 1 la variabile $i
--$i; // decrementa di 1 la variabile $i
$i--; // decrementa di 1 la variabile $i
La differenza della posizione dell'operatore determina la priorità con cui viene eseguito l'incremento o il decremento. Se si trova a sinistra viene eseguita prima di valutare il resto dell'espressione; se si trova a destra viene eseguita dopo aver valutato l'espressione. Vediamo alcuni esempi a riguardo:
$i = 5;
if( ++$i == 6 ) {
echo 'La variabile $i è uguale a 6';
} else {
echo 'La variabile $i è diversa da 6';
}
$i = 5;
if( $i == 6 ) {
echo 'La variabile $i è uguale a 6';
} else {
echo 'La variabile $i è diversa da 6';
}
++$i;
I due costrutti condizionali appena visti sembrano del tutto identici, il risultato però è diverso in base alla posizione dell'operatore di incremento. Nel primo caso la variabile viene incrementata prima di verificare che essa sia uguale a 6, quindi verrà eseguito il codice nel primo ramo della if
, quello corrispondente alla condizione vera. Nel secondo caso, invece, la variabile viene incrementata al termine dell'espressione quindi verrà valutato 5 == 6
che è falso e quindi verrà eseguito il codice nel ramo dell'else
.