Sometimes it is convenient to be able to have variable variable names. That is, a variable name which can be set and used dynamically. A normal variable is set with a statement such as:

<?php
$a = 'hello';
?>

A variable variable takes the value of a variable and treats that as the name of a variable. In the above example, hello, can be used as the name of a variable by using two dollar signs. i.e.

<?php
$$a = 'world';
?>

At this point two variables have been defined and stored in the PHP symbol tree: $a with contents “hello” and $hello with contents “world”. Therefore, this statement:

<?php
echo "$a ${$a}";
?>

produces the exact same output as:

<?php
echo "$a $hello";
?>

i.e. they both produce: hello world.

In order to use variable variables with arrays, you have to resolve an ambiguity problem. That is, if you write $$a[1] then the parser needs to know if you meant to use $a[1] as a variable, or if you wanted $$a as the variable and then the [1] index from that variable. The syntax for resolving this ambiguity is: ${$a[1]} for the first case and ${$a}[1] for the second.

Class properties may also be accessed using variable property names. The variable property name will be resolved within the scope from which the call is made. For instance, if you have an expression such as $foo->$bar, then the local scope will be examined for $bar and its value will be used as the name of the property of $foo. This is also true if $bar is an array access.

Example #1 Variable function example

<?php
class foo {
var $bar = 'I am bar.';
}

$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo $foo->$bar . "\n";
echo $foo->$baz[1] . "\n";
?>

The above example will output:

I am bar.
I am bar.
¿ Que es AJAX ? AJAX, acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono y XML), es una técnica de desarrollo web para crear aplicaciones interactivas ...
Bye bye Silverlight ? Tras el anuncio de Adobe del abandono del desarrollo de la tecnología Flash en móviles, han comenzado a aparecer informaciones apuntando que la próxim...
Avast! 7 descargalo gratis Aproximadamente un año después de que fuera lanzada la versión 6, llega Avast! 7. Como sabéis, se trata de uno de los antivirus gratuitos más interesa...
Como es trabajar desde casa por Internet y como influye en nuestra vida Cuando preguntas a un profesional o alguien que tiene un trabajo desde casa que aspectos han cambiado en su vida diaria, la mayoría te darán las razon...
Los Internautas prefieren las webs Rápidas Estudio Revela que los usuarios de internet prefieren la velocidad ante la posibilidad de personalización del sitio. Los internautas buscan sitios ...
mysqli error (PHP 5) mysqli_error — Regresa una cadena con la descripció del último error Descripción Estilo por procedimientos: cadena mysqli_error (...
Microsoft dice que Hotmail estuvo Caido por Culpa de un Recalentamiento en un Datacenter Si eres usuario de Hotmail o Outlook seguramente te sentiste muy frustrado con la caída del servicio ocurrida el martes, cuando Microsoft dejó sin pod...
Google renueva de nuevo su algoritmo Google acaba de anunciar un nuevo cambio en su algoritmo que, según aseguran, afectará al 35% de los resultados. El objetivo es ofrecer más “frescura”...
Lumia 2520, Nokia contraataca y lanza tu tablet con interesantes prestaciones   La compañía finlandesa Nokia por fin ha presentado su primer tablet después de varios meses de rumores constantes. El Nokia Lumia 2520 l...
Firefox 14 pronto a lanzarse El equipo de trabajo de este navegador open source acaba de lanzar una nueva versión beta de Firefox 14. Esta actualización todavía en desarrollo d...
Variable variables on PHP
Tagged on: