Blog de Gonzalo

VARIABLES VARIABLES

En php se usa el símbolo de dolar ($) para las variables, como bien es sabido. Pero con php se puede hacer referencia al contenido de una variable para usar otra variable que coincida con ese nombre usando dos veces el símbolo de dolar ($$). También se puede hacer ésto usando llaves y doble dolar ${$nombre_variable}
Voy a poner un ejemplo de las dos maneras para que se entienda mejor:
-Tenemos las siguientes variables:
$a = 'b';
$b = 'hola';
Si hacemos un echo $$a se mostrará 'hola' ya que con el doble dolar ($$nombre_variable) está cogiendo el valor de $a como variable que es b y muestra el contenido de la variable $b.

-Tenemos las siguientes variables:
$a = 'b';
$b = 'hola';
Si hacemos un echo ${$a} se mostrará 'hola' ya que con el doble dolar (${$nombre_variable}) está cogiendo el valor de $a como variable que es b y muestra el contenido de la variable $b.
Cuando se usa programación orientada a objetos hay que usar la segunda forma que quedaría del siguiente modo:
$this->{$nombre_variable}.
Para rizar el rizo tambíen se puede concatenar un prefijo a una variable de la siguiente manera:
$a= 'hola';
$xhola = 'pepe';
echo ${'x'.$a}
Para este caso la utilidad es cuando se quieren asignar dinámicamente valores a nuevas variables como el siguiente ejemplo:

foreach ($arr as and$value) {
${'x'.$i} = 'valor de variable';
}
Si os estáis preguntando alguna utilidad de ésto os pongo un ejemplo sencillo. Imaginad que tenéis un formulario con muchos campos y queréis guardar todos los campos del formulario en variables que coincidan con el nombre del campo.
Al principio de este post he dicho que se tenían que poner dos símbolos de dolar ($$). Pero en realidad se pueden usar n. Os pongo un ejemplo cogido de la página php.net:
$Bar = "a";
$Foo = "Bar";
$World = "Foo";
$Hello = "World";
$a = "Hello";

$a; //Returns Hello
$$a; //Returns World
$$$a; //Returns Foo
$$$$a; //Returns Bar
$$$$$a; //Returns a

$$$$$$a; //Returns Hello
$$$$$$$a; //Returns World

Compartir en twitter