O que o =&
operador de atribuição (equals-ampersand) faz no PHP?
Está obsoleto?
php
operators
assignment-operator
Kyle J. Dye
fonte
fonte
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 denew
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: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.
fonte
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.fonte
também tem o efeito de criar,
$y['z']
se não existir, e defini-lo comonull
.Isso evita mensagens de erro que você pode querer ler. Não encontrei documentação sobre isso ainda; possivelmente novo no 5.3, pelo que sei.
fonte