Il principale operatore di assegnazione è '=
'. Come abbiamo
visto in molti esempi incontrati finora, questo operatore assegna alla variabile
che sta alla sua sinistra il risultato dell'espressione o il valore della variabile
che sta alla sua destra.
L'operatore di assegnazione '=
' offre una utile possibilità,
quella di avere delle scorciatoie che permettono di alleggerire un po' il codice;
queste operazioni si fanno associando all'operatore di assegnazione un altro
operatore:
+ - . / % | ^ >> <<
Vediamo alcuni esempi che è meglio :-)
$var = 1;
$var += 5; // $var vale 6
// Questa operazione equivale a $var = $var + 5;
$var -= 2; // $var vale 4
// equivale a $var = $var - 2;
$var *= 6; // $var vale 24
// equivale a $var = $var * 6;
$var /= 3; // $var vale 8
// equivale a $var = $var / 3;
$var %= 3; // $var vale 2
// equivale a $var = $var % 3;
$var <<= 2; // $var vale 8
// equivale a $var = $var << 2
NOTA:
Se non avete capito l'ultima operazione rileggete la parte sulle operazioni
sui bit.
L'operatore '.=
' è utile per concatenare stringhe lunghe:
$nome = "Andrea";
$cognome = "Bergamasco";
$saluto = "Buongiorno, ";
$saluto .= $nome . " " . $cognome;
echo $saluto . "!"; // stamperà: "Buongiorno, Andrea Bergamasco!
Per chi programma in Visual Basic:
In Visual Basic non esistono scorciatoie del genere.
NOTA:
Queste scorciatoie non influiscono sulla velocità di esecuzione del programma;
servono solamente a semplificare il codice e a velocizzarne la scrittura.
Bisogna fare molta attenzione quando si usa l'operatore '==
' poiché
è facile confonderlo con '=
'. Guardiamo l'esempio:
$var_1 = 2;
$var_2 = 2;
$var_4 = 4;
if($var_1 = $var_2) // VERO anche se lo è per il motivo sbagliato
if($var_1 = $var_4) // VERO anche se in realtà dovrebbe dire che
è FALSO!
Se ci dovessimo basare su quello che abbiamo imparato quando eravamo alle elementari,
ci sembrerebbe giusto che il primo caso sia gusto, visto che $var_1
e $var_2
sono uguali (infatti entrambe valgono 2).
In realtà quello che succede è che l'operatore '=
'
assegna il valore di $var_2
a $var_1
; essendo questo
valore positivo diverso da zero, l'espressione viene valutata come VERA.
Nel secondo esempio però i conti non ci tornano più: $var_1
vale 2 e $var_4
vale 4, com'è possibile che adesso PHP ci
dice che sono uguali? A rigor di logica dovrebbe dirci che quello che abbiamo
visto è FALSO. In realtà anche nel secondo caso a $var_1
viene assegnato il valore di $var_4
. 4 è un intero positivo
diverso da 0 e per questo anche la seconda condizione è VERA.
Se noi usiamo invece l'operatore '==
' vediamo che il problema
scompare:
if($var_1 == $var_2) // VERO, questa volta per la ragione corretta
if($var_1 == $var_4) // FALSO, adesso i conti tornano!
Per chi programma in Visual Basic:
In Visual Basic l'operatore '=
' serve sia per le assegnazioni che
per le eguaglianze. Ad esempio:
' VBScript
Variabile = 5
if(Variabile = 5) ...
In Visual Basic questo funziona perché il funzionamento di '=
'
varia a seconda del contesto; invece in PHP si usano due operatori diversi per
evitare ambiguità (può sempre essere utile fare un'assegnazione
mentre si valuta un'espressione condizionale).
Per chi programma in Perl:
In PHP l'operatore '==
' si usa per fare confronti fra variabili
di qualsiasi tipo, non solo numerico come succede in Perl. Inoltre non esistono
espressioni equivalenti agli operatori Perl eq
e ne
.
Per confronti fra stringhe veramente sicuri si consiglia di usare la funzione
strcmp()
.
Per chi programma in JavaScript:
Come avrete notato PHP riguardo a questo aspetto si comporta in modo molto simile
a JavaScript.
Indice | Pagina seguente >>