L'operatore di base dell'assegnazione è "=". Il primo impulso può essere quello di pensare che corrisponda a "uguale a". Invece questo operatore significa che l'operando a sinistra assume il valore dell'espressione a destra (cioè, "assegna il valore a").
Il valore di un'espressione di assegnazione è il valore assegnato. Ovvero il valore di "$a = 3" è 3. Questo permette di fare qualche trucchetto:
<?php
$a = ($b = 4) + 5; // $a è uguale a 9 ora, e $b è stato impostato a 4.
?>
Per gli array, l'assegnazione di un valore a una chiave è ottenuto usando l'operatore "=>". La precedenza di questo operatore è la stessa degli altri operatori d'assegnazione.
In aggiunta all'operatore di base dell'assegnazione, ci sono gli "operatori combinati" per tutta l'aritmetica binaria e gli operatori di stringa che consentono di usare un valore in un'espressione e poi impostare il suo valore al risultato di quell'espressione. Per esempio:
<?php
$a = 3;
$a += 5; // imposta $a a 8, corrispondente a: $a = $a + 5;
$b = "Ciao ";
$b .= "come va?"; // imposta $b a "Ciao come va?", proprio come $b = $b . "come va?";
?>
Si noti che l'assegnazione copia la variabile originale nella nuova (assegnazione per valore), così i cambiamenti della prima non si verificheranno nell' altra. Ciò può anche avere rilevanza se si ha bisogno di copiare un grande array in un ciclo molto stretto.
Un'eccezione al comportamento standard dell'assegnazione per valore avviene con gliobject, che sono assegnati per riferimento in PHP 5. Gli oggetti possono essere copiati esplicitamente attraverso la keyword clone.
L'assegnazione per riferimento è pure supportato, usando la sintassi "$var = &$othervar;. 'Assegnazione per riferimento' significa che entrambe le variabili finiscono con il puntare agli stessi dati, e nulla è copiato.
Example #1 Assegnare per riferimento
<?php
$a = 3;
$b = &$a; // $b è un riferimento ad $a
print "$a\n"; // stampa 3
print "$b\n"; // stampa 3
$a = 4; // modifica $a
print "$a\n"; // stampa 4
print "$b\n"; // stampa ugualmente 4, dal momento che $b è un riferimento ad $a, che è
// stata modificata
?>
Da PHP 5, l'operatore new
restituisce automaticamente un riferimento, quindi assegnare il risultato di
new per riferimento risulta
in un messaggio E6DEPRECATED
in PHP 5.3 e successivi, e
un messaggio E_STRICT
nelle version precedenti.
Per esempio, quesco codice provocherà un avvertimento:
<?php
class C {}
/* la prossima linea genera il seguente messaggio di errore:
* Deprecated: Assigning the return value of new by reference is deprecated in...
*/
$o = &new C;
?>
Ulteriori informazioni sui riferimenti e sul loro uso possono essere trovati nella sezione del manuale Spiegazioni sui riferimenti .