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!!