Los operadores de asignación
El operador de asignación más simple es el signo "=".
El primer reflejo es pensar que este signo significa
"igual a". No es el caso. Significa que
el operando de la izquierda se ve asignado el valor de
la expresión que está a la derecha del signo igual.
El valor de una expresión de asignación es el valor
asignado. Por ejemplo, el valor de la expresión
'$a = 3
' es el valor 3. Esto permite utilizar
trucos tales como:
Ejemplo #1 Asignaciones anidadas
<?php
$a = ($b = 4) + 5;
// $a ahora es igual a 9, y $b vale 4.
var_dump($a);
?>
Además del simple operador de asignación, existen
"operadores combinados" para todos los operadores
aritméticos,
la unión de arrays y para los operadores sobre los strings.
Esto permite utilizar el valor de una variable en una expresión y
asignar el resultado de esta expresión a esta variable.
Por ejemplo:
Ejemplo #2 Asignaciones Combinadas
<?php
$a = 3;
$a += 5; // asigna el valor 8 a la variable $a corresponde a la instrucción '$a = $a + 5';
$b = "Hola ";
$b .= " a todos!"; // asigna el valor "Hola a todos!" a
// la variable $b
// idéntico a $b = $b." a todos!";
var_dump($a, $b);
?>
Se puede observar que la asignación copia el contenido de la variable original
en la nueva variable (asignación por valor), lo que hace que los
cambios de valor de una variable no modificarán el valor de
la otra. Esto puede ser importante al copiar un gran array
durante un bucle.
Una excepción al comportamiento de asignación por valor en PHP es el tipo
object, estos son asignados por referencia.
La copia de objeto debe ser explícitamente solicitada gracias al mot-clé
clone.
Asignación por referencia
La asignación por referencia también es soportada, mediante la sintaxis
"$var = &$othervar;". La asignación por
referencia significa que las dos variables apuntan al mismo contenedor de
datos, nada es copiado en ningún lugar.
Ejemplo #3 Asignación por referencia
<?php
$a = 3;
$b = &$a; // $b es una referencia a $a
print "$a\n"; // muestra 3
print "$b\n"; // muestra 3
$a = 4; // cambia $a
print "$a\n"; // muestra 4
print "$b\n"; // muestra 4 también, porque $b es una referencia a $a, que ha sido
// cambiada
?>
El operador new
devuelve una referencia automáticamente, por lo tanto, asignar el resultado de
new por referencia es un error
Ejemplo #4 Nuevo operador por referencia
<?php
class C {}
$o = &new C;
?>
El resultado del ejemplo sería:
Parse error: syntax error, unexpected token ";", expecting "("
Más información sobre las referencias y sus usos posibles pueden ser
encontrados en la sección del manual Las referencias
explicadas.
Los operadores de asignación aritméticos
Operadores de asignación bits a bits
Otros operadores de asignación