> Manuales > Taller de PHP

Ofrecemos el significado y uso de variables variables en el lenguaje de programación PHP.

Escribo esta ayuda técnica sobre "variables variables" porque me parece un tema de no muy fácil comprensión pero de gran ayuda en cuanto a desarrollo con PHP, espero que a todos pueda ayudarnos a comprender un poco mejor si utilizo algún ejemplo práctico que en algunos momentos me ha ayudado a resolver ciertos problemas.

La explicación más sencilla y fácil de comprender se me ocurre sea la traducción al castellano de php.net, así que la pondré tal cual y después aplicaré la práctica procurando expresarme mas claramente.

############# Aquí comienza la explicación del sitio #######

A veces es conveniente tener nombres de variables variables. Dicho de otro modo, son nombres de variables que se pueden establecer y usar dinámicamente. Una variable normal se establece con una sentencia como:

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


Una variable variable toma el valor de una variable y lo trata como el nombre de una variable. En el ejemplo anterior, hello, se puede usar como el nombre de una variable utilizando dos signos de dolar. p.ej.

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


En este momento se han definido y almacenado dos variables en el árbol de símbolos de PHP: $a, que contiene "hello", y $hello, que contiene "world". Es más, esta sentencia:

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


produce el mismo resultado que:

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


Ambas producen el resultado: hello world.

############ Y aquí termina la explicación #############

El URL es http://mx.php.net/manual/es/language.variables.variable.php

Según creo, si hemos tenido algún contacto con la programación, habremos comprendido bastante bien la explicación, pero ¿ y como nos puede llegar a servir? ¿ en que ocasiones me puede ayudar?. Pues en particular lo he contemplado en situaciones donde en un archivo tengo que poner varios checkbox o radio buttons y en el siguiente tengo que examinar una a una esas variables; y como no deseo realizarlo de esta forma, los termino metiendo en un for, pero si he metido los nombres de los checkbox de la siguiente manera...

<form name='form1' method='post' action='guarda_preferencias.php'>
<table width='700' border='0'>
<tr>
<td><span class='style4'>Para Empezar </span></td>
</tr>
<tr>
<td><blockquote class='style5'><strong>
<input type='checkbox' name='pref_1' value='bienvenida'>
     Bienvenida</strong></blockquote></td> </tr>
<tr>
<td><blockquote class='style5'><strong>
<input type='checkbox' name='pref_2' value='temario'>
     Temario </strong></blockquote></td>
</tr>


y así sucesivamente hasta pref_n; en mi archivo guarda_preferencias.php, después del for que empezaría la revisión de la transferencia de cada checkbox, existiría el ligero inconveniente de tener que revisar $pref_$i, lo cual es un tremendo problema porque $pref_ no existe. Lo anterior yo lo he resuelto de la siguiente manera: hago uso de variables variables que me permitirán obtener el valor que realmente quiero, que es pref_1, pref_2....pref_n .

<?
for ($i=1;$i<=n;$i++){ //n es por supuesto el total de elementos checkbox
que hayamos creado
$nombre = "pref_$i";
$prefer = $$nombre;
if ($prefer != "") print "$nombre si trae algo, que es $prefer";
?>


Con lo cual $nombre hago que sea pref_ más el valor de $i, que irá aumentado de uno en uno cada vez que entre al for, y despues $prefer me dará el valor real de pref_1, pref_2, pref_3 y así hasta n, pudiendo yo evaluar cada checkbox uno a uno sin problemas, en este caso yo solo estoy evaluando que no esté vacío e imprimo el nombre y el valor.

Espero que haya quedado un poquito mas claro para todos, saludos!!

Roberto Bárcenas

Manual