Operador de asignación de referencia en PHP, =&

Resuelto Kyle J. Dye asked hace 54 años • 4 respuestas

¿ Qué hace el =&operador de asignación (igual-ampersand) en PHP?

¿Está en desuso?

Kyle J. Dye avatar Jan 01 '70 08:01 Kyle J. Dye
Aceptado

No está en desuso y es poco probable que lo esté. Es la forma estándar de, por ejemplo, hacer que parte de una matriz o un objeto refleje los cambios realizados en otra, en lugar de copiar los datos existentes.

Se llama asignación por referencia , lo que, como cita el manual, "significa que ambas variables acaban apuntando al mismo dato, y no se copia nada en ningún lado" .

Lo único que está en desuso =&es "asignar el resultado newpor referencia" en PHP 5 , lo que podría ser fuente de confusión. newse 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 =&( igual ampersand ) es lo mismo que = &( igual ampersand espacio ) y a menudo se escribe de manera que coincida con la otra variable como $x = &$y['z'];o $x = &$someVar( ampersand signo de dólar nombre de variable ). Ejemplo simplificado de los documentos:

$a = 3;
$b = &$a;
$a = 4;
print "$b"; // prints 4

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.

user56reinstatemonica8 avatar Nov 17 '2011 22:11 user56reinstatemonica8

Son dos operadores diferentes. =es una tarea como probablemente sepas. Y &significa que se debe acceder a la variable por referencia en lugar de por valor.

Asaph avatar Nov 20 '2009 04:11 Asaph
$x = &$y['z'];

también tiene el efecto de crear $y['z']si no existe y establecerlo en null.

Esto evita mensajes de error que quizás hubiera querido leer. Todavía no he encontrado documentación sobre esto; posiblemente nuevo en 5.3, por lo que sé.

malcanso avatar Sep 23 '2013 22:09 malcanso