Manual de PHP: Variables

De Foros del Web

Contenido

¿Qué son las variables?

Las variables, como son conocidas, no son más que almacenes de información temporales. Éstas tienen por finalidad guardar información que luego utilizarás o que te servirá para realizar una operación determinada. Como su nombre lo indica, su contenido es variable; es decir, puedes modificar, crear o destruir variables todo el tiempo a lo largo del script.

Por ejemplo podemos hacer un programa conversor de monedas, entonces en una variable llamada $tipodecambio podemos grabar el valor por el que debe ser multiplicada la otra moneda.

$tipodecambio = 7.25;

Si te fijas en este ejemplo, notarás que una variable es en realidad una palabra precedida del signo de dólar ($).

Aunque suene obvio, hay que indicar que las variables dentro de nuestro script deben tener nombres distintos.

Un nombre de variable válido será aquel que empiece por un caracter alfabético [a-z] o de subrayado [_], seguido de caracteres alfanuméricos [a-z y 0-9] y de subrayado [_]. En otras palabras, una variable NO puede empezar con caracteres numéricos, ni puede contener caracteres especiales [signos de puntuación, letras especiales como ñ, acentos, etc.). Sólo letras, números y caracteres de subrayado (_). Además, es importante saber que el nombre de variable es "case sensitive", o sea, sensible a mayúsculas y minúsculas; por lo tanto, no es lo mismo $variable que $Variable. Representa uno de los dos únicos tipos de identificadores que son "case sensitive" (las constantes son las otras).

Creación y modificación de Variables

Como has visto en el ejemplo anterior, crear variables es muy sencillo. No es necesario declararlas antes de usarlas como se hace en otros lenguajes pues podemos asignarles valores desde un inicio. Basta con escribir la variable, seguida del signo igual (=), y luego su valor. Para modificar su valor hay que repetir esta sencilla operación, asignando el nuevo valor a la variable.

//Creamos la variable
$mi_variable = "Valor inicial de mi variable"; 
 
// La imprimimos
echo $mi_variable;
 
// Modificamos su valor
$mi_variable = "Nuevo valor de mi variable";
 
// La imprimimos nuevamente para demostrar que su valor es ahora distinto
echo $mi_variable;

Deliberadamente, hasta ahora, hemos usado valores de texto (o de tipo string) para casi todos los ejemplos. Pero, como veremos en el siguiente punto, hay muchos tipos de variables, cada uno con una finalidad específica.

Tipos de Variables

El tipo de variable está dado por el tipo de datos que ésta contiene. Entonces, al hablar de tipos de variables en realidad estamos hablando de tipos de datos que PHP maneja. Hay distintos tipos de variables y cada una tiene un uso específico:

$tipodecambio = 7.25;
$nombre = 'Oscar Mota';
$pagado = true;


Si ya tienes algunos conceptos de programación notarás cómo en el segundo ejemplo hemos declarado una variable de tipo string y lo único que hemos hecho es colocarle comillas al valor, en los otros casos no lo necesita, como el primer ejemplo que es una variable de tipo double o float (numérica) y en el último ejemplo que sería una de tipo boolean (falso y verdadero). En otra sección revisaremos los tipos de datos más usados en PHP.

Variables y Cadenas de Texto

Una importante característica de PHP es que uno puede expandir variables dentro de las cadenas de texto si éstas están rodeadas por comillas dobles ("). Por ejemplo veamos este código:

$nombre = 'Oscar Mota';
$saludo = "Hola $nombre como estas?";
echo $saludo; // Esto imprime Hola Oscar Mota como estas?

Esta caracteristica importante de PHP es luego el dolor de cabeza de muchos programadores, ya que luego al querer imprimir cadenas HTML con comillas se crean errores.

Lo importante es decidir qué comillas se van a utilizar; si necesitas muchas comillas dobles, crea tu cadena con comillas simples, por ejemplo, imprimir un atributo HTML:

$div = '<a href="http://www.forosdelweb.com/" title="Foros del Web" id="link_fdw" style="link_azul">Link a Foros del Web</a>';

Otra caracteristica de PHP es el operador de unión de cadenas (.). Con este operador podemos unir dos o más cadenas de texto, o incluso cadenas con variable, de manera que formen parte de la misma serie de datos.

$cadena1 = "Hola mundo";
$cadena2 = ", este es ";
 
$texto = $cadena1 . "$cadena2 mi primer script";
 
echo $texto; // Imprime: Hola mundo, este es mi primer script

Como se aprecia en el último ejemplo, el usar comillas dobles hace que las variables en el texto sean reemplazadas por sus valores correspondientes, no así con las comillas simples.

Ámbito de las Variables

Hay dos tipos de ámbitos en los que se puede declarar las variables: local y global. La diferencia es que las variables locales solo pueden ser usadas dentro de la función en donde fueron definidas, mientras que las globales las podemos utilizar en cualquier parte de nuestro script y desde diferentes funciones.

Por norma general cada variable es tomada como local a menos que se declare de diferente forma para que sea global, ejemplo:

global $nombre_del_sitio = "Foros del Web";

Veremos la aplicación de este concepto cuando veamos el uso de funciones en PHP.


Ejemplos en el uso de variables

Tomando como base el punto anterior podemos hacerle modificaciones a nuestro primer programa para que luzca de la siguiente forma

<html>
<body>
 
<?php
 
// Este es mi segundo programa en php
$texto = "Hola, soy una variable con un texto";
 
echo $texto;
 
?>
 
</body>
</html>


Puedes grabarlo con el nombre que desees y verás que funciona de igual forma que el primer ejemplo, pero si nos fijamos en el código vemos que hemos almacenado un valor en la variable $texto y que para desplegarlo hemos utilizado de nuevo el comando echo, pero ahora sin las comillas pues que lo que queremos es que imprima el contenido de la variable.

También podemos imprimir en pantalla el resultado de una variable más algún texto específico en una misma línea, por ejemplo:

<body>
<html>
 
<?php
$texto = "Hola, soy una variable con un texto";
echo "El programa quiere saludarte: " . $texto;
?>
 
</body>
</html>

Variables por referencia

Por defecto, el operador de asignación = trabaja por valor, es decir, copia el valor de una expresión del lado derecho y lo asigna a la variable del lado izquierdo. Si el lado derecho resulta ser una varible, copia solo el valor de la variable, como subsecuencia cualquier cambio a la variable del lado izquierdo no afectará a la variable del lado derecho. Por ejemplo:

$a = 10;
$b = $a;
$b = 20;
echo $a; // imprime 10

Pero hay circunstancias que deseas que la variable de la derecha se vea afectado por el cambio que ocurra en la izquierda. Esto se conoce como referencia:

$a = 10;
$b = &$a;
$b = 20;
echo $a; // imprime 20

El uso de las variables por referencia en ocaciones es útil, pero tiene riesgos. Una de las razones es porque la actividad de las referencia es más lenta que como comunmente se asignan los valores a las variables. PHP usa un mecanismo para optimizar las asignaciones por valores. Otra es porque puede ser difícil a la hora de depurar el código. Ejemplo

<?php
$colors = array('red', 'blue', 'green', 'yellow');
foreach ($colors as &$color){}
print_r($colors); // imprime Array ( [0] => red [1] => blue [2] => green [3] => yellow )
foreach ($colors as $color){}
print_r($colors); // imprime Array ( [0] => red [1] => blue [2] => green [3] => green )

Al pasar por referencia, y volver luego a usar el foreach se hace un cambio, esto es por la referencia. Para eliminar la referencia, se usa la función unset:

<?php
$colors = array('red', 'blue', 'green', 'yellow');
foreach ($colors as &$color){}
print_r($colors); // imprime Array ( [0] => red [1] => blue [2] => green [3] => yellow )
unset($color);
foreach ($colors as $color){}
print_r($colors); // imprime Array ( [0] => red [1] => blue [2] => green [3] => yellow )

Este artículo es parte del Manual de PHP.





Herramientas personales