Operador de asignación de referencia en PHP, =&
¿ Qué hace el =&
operador de asignación (igual-ampersand) en PHP?
¿Está en desuso?
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 new
por referencia" en PHP 5 , lo que podría ser fuente de 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 =&
( 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.
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.
$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é.