Operadores de Atribuição
O operador básico de atribuição é "=". A sua primeira inclinação deve ser
a de pensar nisto como "é igual". Não. Isto quer dizer, na verdade, que o
operando da esquerda recebe o valor da expressão da direita (ou seja,
"é definido para").
O valor de uma expressão de atribuição é o valor atribuído. Ou seja,
o valor de "$a = 3" é 3. Isto permite que você faça alguns
truques:
Além do operador básico de atribuição, há "operadores
combinados" para todos os operadores
aritméticos, de array e string que permitem a você pegar um valor de uma
expressão e então usar seu próprio valor para o resultado daquela expressão. Por
exemplo:
Note que a atribuição copia a variável original para a nova
(atribuição por valor), assim a mudança de uma não afeta a
outra. Isto pode ser relevante se você precisa copiar algo
como uma grande matriz dentro de um loop apertado.
Uma exceção ao comportamento geral de atribuição ocorre
com objetos, que são atribuídos por referência no PHP 5.
Objetos podem ser explicitamente copiados através da instrução clone.
Atribuição por referência
Atribuição por referência também é possível, utilizando-se a sintaxe
"$var = &$outravar;".
A atribuição por referência significa que ambas as variáveis apontam
para o mesmo dado, e nada é copiado.
Exemplo #1 Atribuição por referência
<?php
$a = 3;
$b = &$a; // $b é uma referência de $a
print "$a\n"; // imprime 3
print "$b\n"; // imprime 3
$a = 4; // modificamos $a
print "$a\n"; // imprime 4
print "$b\n"; // imprime 4 também, pois $b é uma referência de $a, que foi
// modificada
?>
A partir do PHP 5 o operador new
retorna uma referência automaticamente, de forma que a atribuição de um resultado de
new por referência gera um alerta
E_DEPRECATED
no PHP 5.3 e posteriores, e
um alerta E_STRICT
nas versões anteriores.
Por exemplo, esse código irá gerar um alerta:
Mais informações sobre referências e seus potenciais usos podem ser encontrados
na seção Explicando Referências
do manual.