O que o =&
operador de atribuição (equals-ampersand) faz no PHP?
Está obsoleto?
O que o =&
operador de atribuição (equals-ampersand) faz no PHP?
Está obsoleto?
Respostas:
Não está obsoleto e é improvável que seja. É a maneira padrão de, por exemplo, fazer parte de um array ou espelho de objeto alterações feitas em outro, em vez de copiar os dados existentes.
Chama-se atribuição por referência , o que, para citar o manual, “significa que ambas as variáveis acabam apontando para os mesmos dados, e nada é copiado para lado nenhum” .
A única coisa que está obsoleta =&
é "atribuir o resultado de new
por referência" no PHP 5 , o que pode ser a fonte de qualquer confusão. new
é atribuído automaticamente por referência, então &
é redundante / obsoleto em $o = &new C;
, mas não em $o = &$c;
.
Como é difícil pesquisar, observe que =&
( igual ao e comercial ) é o mesmo que = &
( igual ao e comercial de espaço ) e geralmente é escrito de forma que vá para a outra variável como $x = &$y['z'];
ou $x = &$someVar
( nome da variável do símbolo de cifrão e comercial ). Exemplo simplificado da documentação:
$a = 3;
$b = &$a;
$a = 4;
print "$b"; // prints 4
Aqui está um link útil para uma seção detalhada sobre Atribuir por referência no manual do PHP . Essa página faz parte de uma série de referências - vale a pena reservar um minuto para ler a série inteira.
São dois operadores diferentes. =
é uma atribuição como você provavelmente sabe. E &
significa que a variável deve ser acessada por referência e não por valor.