programacion operadores logicos expresiones control asignacion aritmeticos php operators assignment-operator

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



operadores de control php (3)

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

¿Está desaprobado?


No está en desuso y es poco probable que lo sea. Es la forma estándar de, por ejemplo, hacer parte de una matriz o cambios de espejo de objeto hechos a 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 nada se copia en ninguna parte" .

Lo único que está obsoleto con =& es "asignar el resultado de un new por referencia" en PHP 5 , que podría ser el origen 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; .

Como es difícil buscar, tenga en cuenta que =& ( es igual a ampersand ) es igual que = & ( es igual a espacio y signo ) y a menudo se escribe de manera que se encuentre con la otra variable como $x = &$y[''z'']; o $x = &$someVar ( nombre de la variable del signo de dólar y signo ). 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 toda la serie.


Son dos operadores diferentes. = es una tarea como probablemente sabrá. 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 como null .

Esto evita mensajes de error que podría haber deseado leer. No he encontrado documentación sobre esto todavía; posiblemente nuevo en 5.3, por lo que sé.