Variables Variables en PHP, ¿Qué es y cómo funciona?

Si llegaste a esta entrada es porque conoces actualmente que es una variable en PHP, sin embargo careces de conocimientos  lo que respecta a una variable de variable, puede leerse o “sonar” hasta confuso pero una vez que puedas entender este concepto podrás resolver diferentes necesidades para programar en la web, sobre todo con el contenido dinámico.

Concepto: Una variable variable toma el valor de una variable y lo trata como el nombre de una variable. Ejemplo:

<?php
$a='Hola';
$$a = 'mundo';

echo "$a $hola";
?>

Basta, vamos aprender acerca de las Variable variables. Algunas personas me preguntan, ¿por qué escribir sobre esto?. Simple razón. Hay personas que nunca prestan  toda la atención a una clase por diferentes factores, y en lo útil que esto podría ser. Vamos a dar un vistazo sobre cómo definir estos tipos de variables. Recapitulemos sobre la definición de una variable llamada Velocidad, con un valor numérico de 10.

/*Ejemplo 1 - Variable sencilla*/
<?php $velocidad = 10; ?>

Para declarar una ‘Variable variable’, se haría de la siguiente forma:

/*Ejemplo 2 - Variable Variable Modo 1*/
<?php 
     $variable_x = 'Hola';
     $$variable_x = 'Mundo';
?>

 

/*Ejemplo 3 - Variable Variable Modo 2*/
<?php 
     $variable_x = 'Hola';
     ${$variable_x} = Mundo;
?>

*Nota: En mi opinión, la segunda manera de hacer esto es mi forma preferida de hacerlo. La razón es simple, se ve un poco más organizada, y cuando se trata de buscar el código y mantenerlo, ustedes serán capaz de detectarlo con más facilidad, las variable variables, de las variables regulares .

El ejemplo anterior es exactamente lo mismo que nuestro primer ejemplo. ¿Qué dijo? Sí, es la misma cosa. Así que ¿por qué molestarse haciendo que el camino más largo?. ¡No!, en realidad es una manera corta, permíteme explicar un poco más a detalle dónde podrías usar variables variables.

En un formulario web normal, cuando se le pide al usuario algunos datos personales, es probable que pida: curp, nombre, apellido, fecha de nacimiento, dirección, ¿qué ciudad y / o estado en que vive?, tal vez incluso su número de teléfono. No podemos olvidar el correo electrónico, como puede ser que desee ponerse en contacto con este usuario en particular de una manera rápida. Vamos a suponer que ya tenemos un formulario, con todos estos campos, y que va a ser procesada por nuestro servidor de PHP, llamado procesar.php, y normalmente tendría este método usual:

<?php 
     $curpa  $_POST['v_curp'];  //Variable de la curp
     $fname = $_POST['v_nombre'];  //Variable nombre
     $lname = $_POST['v_apellidos'];  //Variable apellido
     $dob   = $_POST['v_fechanac'];    //Variable fecha de nacimiendo
     $add1  = $_POST['v_dir1'];   //Variable direccion
     $add2  = $_POST['v_dir2'];   //Variable direccion 2
     $city  = $_POST['v_ciudad'];   //Variable ciudad
     $state = $_POST['v_estado'];  //Variable estado
     $phone = $_POST['v_telef'];  //Variable numero de telefono
     $email = $_POST['v_email'];  //Variable correo electrónico
?>

Lo anterior no es una mala idea, pero en el caso que tengamos más de 20 campos que necesitamos para procesar, nos limitaremos a añadir 20 líneas más de código, para lograr nuestro objetivo. Ahora bien, echemos un vistazo a la magia “Variable variables”. El código anterior se podría reducir un poco a nuestra conveniencia. De la siguiente manera:

<?php 
     // Todos los campos a ser procesados
     $fields = array('v_curp','v_nombre','v_apellidos','v_fechanac','v_dir1',
                      'v_dir2','v_ciudad','_estado','_telef','v_email'); 
     // Tienes una iteración para crear todos los campos 
     foreach($fields as $field)
     {
          ${$field} = $_POST[$field];
     }
?>

Como puede ver, todas estas variables que necesitamos, se crean dentro de un bucle “loop”. Si tuviéramos que agregar unos cuantos campos más a nuestra forma, todo lo que tendría que hacer es añadir los nombres de los campos en nuestro array $fields.

Ahora si, ¿entendieron que son las “Variables variables” y en que momento usarlas?

Gracias por visitar el POST, si tienes alguna duda no te olvides de agregar algún comentario.