¿Qué hace el =&
operador de asignación (igual a comercial) en PHP?
¿Está en desuso?
php
operators
assignment-operator
Kyle J. Dye
fuente
fuente
Respuestas:
No está desaprobado y es poco probable que lo esté. Es la forma estándar de, por ejemplo, hacer parte de una matriz o cambios de espejo de objeto realizados en otra, en lugar de copiar los datos existentes.
Se llama asignación por referencia , lo que, para citar el manual, "significa que ambas variables terminan apuntando a los mismos datos y no se copia nada en ninguna parte" .
Lo único que está desaprobado
=&
es "asignar el resultado denew
por referencia" en PHP 5 , lo que podría ser la fuente de cualquier confusión.new
se asigna automáticamente por referencia, por lo que&
es redundante / obsoleto en$o = &new C;
, pero no en$o = &$c;
.Dado que es difícil de buscar, tenga en cuenta que
=&
( es igual a y comercial ) es lo mismo que= &
( es igual a espacio y comercial ) y, a menudo, se escribe de tal manera que se encuentra con la otra variable como$x = &$y['z'];
o$x = &$someVar
( nombre de variable de signo de dólar y comercial ). Ejemplo simplificado de los documentos:Aquí hay un enlace útil a una sección detallada sobre Asignar por referencia en el manual de PHP . Esa página es parte de una serie de referencias; vale la pena tomarse un minuto para leer la serie completa.
fuente
Son dos operadores diferentes.
=
es una asignación como probablemente sepa. Y&
significa que se debe acceder a la variable por referencia en lugar de por valor.fuente
también tiene el efecto de crear
$y['z']
si no existe y establecerlo ennull
.Esto evita los mensajes de error que podría haber querido leer. Todavía no he encontrado documentación sobre esto; posiblemente nuevo en 5.3, por lo que sé.
fuente