En este ejemplo se define una variable $Cadena y después se define una variable $Ref que contiene la dirección de la variable $Cadena. El signo & (ámpersan) adelante del nombre de la variable indica que se está almacenando la dirección y no el contenido. Si posteriormente se modifica el contenido de la variable $Cadena, automáticamente ese cambio se verá reflejado en la variable $Ref.
<?php // Referencias (ejemplo file003.php) $Cadena = "Tipo de dato de cadena"; $Ref = &$Cadena; // en $Ref se guarda la dirección de $Cadena $Cadena = "--Aquí la cambio-- "; echo $Ref; // veremos "--Aquí la cambio-- " ?>
El almacenamiento del contenido de una variable es lo mismo a tener una copia de la variable de origen. En cambio, en el almacenamiento de la dirección, la nueva variable sólo tiene el dato que permite encontrar a la variable original. |
Pero, la variable de origen puede no tener contenido de datos, podría contener una referencia. La referencia es transitiva. Es decir, si queremos crear una segunda variable $Ref2 haciendo referencia a la variable $Ref (que por su parte tiene la referencia a $Cadena) lograremos visualizar el contenido de $Cadena utilizando $Ref2.
<?php // Referencias (ejemplo file004.php) $Cadena = "Ejemplo"; $Ref = &$Cadena; // en $Ref se guarda la dirección de $Cadena $Ref2 = &$Ref; // Referencia de referencia echo $Ref2; // podremos ver "Ejemplo" ?>