Ver índice
Variables

        Ocultar índice  

   Índice de contenidos
   Instalación en Windows
   Instalación en Ubuntu
   Servidores seguros
   Páginas dinámicas
   Sintaxis básica
   Operaciones
   Arrays
   Formatos de presentación
   Operadores
   Bucles
   Extraer y ord. información
   Funciones
   Ficheros externos
   Imágenes dinámicas
   Gestión de directorios
   Cookies y sesiones
   Clases y objetos
   Ficheros en formato PDF
   Bases de datos MySQL
   PHP y XML
   PDO - Bases SQLite / MySQL
   MySQL a traves de misqli
   Algo de JavaScript y AJAX


¿Qué es una variable?

Podríamos decir que una variable es el espacio de la memoria RAM del ordenador que se reserva –a lo largo del tiempo de ejecución de un script– para almacenar un determinado tipo de datos cuyos valores son susceptibles de ser modificados por medio de las instrucciones contenidas en el propio programa.

En PHP todos los nombres de variable tienen que empezar por el símbolo $.y han de llevar una letra inmediatamente después del símbolo $ ($pepe1 es un nombre válido, pero $1pepe no lo es).

Para PHP las letras mayúsculas y las minúsculas son distintas. La variable $pepe es distinta de $Pepe.

Definición y tipos de variables

A diferencia de otros lenguajes de programación, PHP no requiere una definición previa de las variables. Se pueden definen en el momento en que son necesarias y para ello basta que se les asigne un valor por medio de una expresión como esta:

$variable=valor;

donde valor puede ser una cadena (texto, texto y números, o números que no requieren ser operados matemáticamente) o sólo un número. En el primero de los casos habría que escribirlo entre comillas.

En PHP tampoco es necesario definir el tipo de variable, por lo tanto, una misma variable puede contener una cadena de caracteres en un momento del proceso y, posteriormente, un valor numérico susceptible de ser operado matemáticamente.

  ¡Cuidado!  

En algunas configuraciones de PHP el uso de variables no definidas previamente puede dar lugar a mensajes de error como el que puedes observar si ejecutas el ejemplo12.php desde PHP 5.3.6 utilizando la configuración explicada en páginas anteriores.

El mensaje se debe a la forma en la que está configuradas la directiva relativa a los mensajes de error cuya explicación puedes ver en este enlace.

Ese mensaje de error puede evitarse de la forma que hemos hecho en el ejemplo14.php o modificando la directiva error_reporting o display_errors tal como se comenta aquí

Ámbito de las variables

Los valores de una variable definida en cualquier parte de un script –siempre que no sea dentro de una función– pueden ser utilizados desde cualquier otra parte de ese script, excepto desde dentro de las funciones que contuviera el propio script o desde las que pudieran estar contenidas en un fichero externo.

Si una variable es definida dentro de una función sólo podrá ser utilizada dentro esa función.

Si en una función aludimos a una variable externa a ella, PHP considerará esa llamada como si la variable tuviera valor cero (en caso de ser tratada como número) o una cadena vacía ("" es una cadena vacía).

Igual ocurriría si desde fuera de una función hiciéramos alusión a una variable definida en ella.

Si definimos dos variables con el mismo nombre, una dentro de una función y otra fuera, PHP las considerará distintas. La función utilizará –cuando sea ejecutada– sus propios valores sin que sus resultados modifiquen la variable externa.

Variables globales

Lo comentado anteriormente, admite algunas excepciones. Las funciones pueden utilizar valores de variables externas a ellas pero ello requiere incluir dentro de la propia función la siguiente instrucción:

global nombre de la variable;

Por ejemplo: global $a1; permitiría utilizar el valor preexistente de esa variable dentro de una función. Las eventuales modificaciones que pudiera producirle la función mantendrían su nuevo valor después de finalizar la ejecución de la función.

En una instrucción global pueden definirse como tales, de forma simultánea, varias variables. Basta con escribir los nombres de cada una de ellas separados por comas. Por ejemplo: global $a1, $a2, $a3;

Variables superglobales

A partir de la versión 4.1.0 de PHP se ha creado un nuevo tipo de variables capaces de comportarse como globales sin necesidad de que se definan como tales. Estas variables que no pueden ser creadas por usuario, recogen de forma automática información muy específica y tienen nombres preasignados que no pueden modificarse.

Las estudiaremos un poco más adelante. Por ahora, sólo citar los nombres de algunas de ellas: $_SERVER, $_POST, $_GET, $_ENV o $_SESSION son los de algunas de las más importantes.

Practicando con variables y sus ámbitos

El código fuente que ves aquí debajo corresponde al ejemplo12.php. Si pulsas en el enlace que hay debajo y ejecutas el script verás que aparece un mensaje de error que dice: Notice: Undefined variable: pepe ... que parece contradictorio con lo afirmado más arriba respecto a que PHP no requiere una definición previa de variables. Esa afirmación es cierta. Lo que ocurre es que PHP no está dando un mensaje de error propiamente dicho (NOTICE es una simple advertencia con un significado distinto a ERROR ) sino que advierte de que no se ha hecho algo habitual en una gran cantidad de lenguajes.

Hay dos formas de evitar ese mensaje. La primera de ellas la comentamos en el propio código fuente sería definir las variables antes de usarlas (siguiendo la metodología más generalizada de programación). La segunda de las opciones sería modificar el fichero php.ini cambiando el valor actual: error_reporting = E_ALL | E_STRICT por error_reporting = E_ALL & ~E_NOTICE. De esta forma, (al anteponer ~a E_NOTICE) estaremos indicando a PHP , tal como explicamos aquí, que desactive este tipo de mensajes de advertencia.

<html>
<head>
</head>
<body>
<?php
/* En ejemplo12.php la linea siguiente a este comentario($pepe="" )
estará marcada con líneas de comentario mientras que en ejemplo13.php
y ejemplo14.php aparecerá tal como la ves aquí */
$pepe="";

# Definimos las variables $Pepe y $Pepa (ojo con mayúsculas y minúsculas)
$Pepe="Me llamo Pepe y soy serio y formal";
$Pepa="Me llamo Pepa y también soy seria y formal";

?>

<!-- esto es HTML, hemos cerrado el script -->

<center><b>Vamos a ver el contenido de las variables</b></center>

<!--   un nuevo script PHP -->

<?php
echo "<br> El valor de la variable $pepe es: ",$pepe;
echo "<br> No ha puesto nada porque $pepe esta vacía";
echo "<br> El valor de la variable Pepe es: ",$Pepe;
?>

<center><b><br>Invocando la variable desde una función</b></center>

<?php
/* Escribiremos una function llamada vervariable
   Observa la sintaxis. La palabra function delante
   y el () al final seguidos de la llave.
   Hasta que no cerremos la llave todas las líneas
   serán consideradas parte de la función */

function vervariable(){
// $Pepe="";
/* si no inicializamos la variable $Pepe nos puede aparecer el mensaje
   de error que comentamos al margen y que veremos al ejecutar este script
   tanto desde el enlace ejemplo12.php como desde el ejemplo13.php
   En el caso del ejemplo14.php, donde ya no aparece el error lo único que
   hemos hecho ha sido precisamente inicializar la variable
    $Pepe asignándole un valor nulo tal como puedes ver en la línea
    anterior (marcado en rojo)  y comentada con //
    En el ejemplo14.php  hemos descomentar esta línea */
echo "<br> Si invoco la variable Pepe desde una función";
echo "<br>me aparecerá en blanco";
echo "<br>El valor de la variable Pepe es: ",$Pepe;
}
/* esta llave de arriba señala el final de la función.
   Los contenidos que hay en adelante ya no pertenecen a ella */

/* Haremos una llamada a la funcion vervariable.
   Las funciones no se ejecutan hasta que no se les ordena
   y se hace de esta forma que ves aquí debajo:
   nombre de la funcion seguido de los famosos paréntesis */

vervariable();
?>

<!-- mas HTML puro  -->
<center><b><br>Ver la variable desde la función
                        poniendo <i>global</i></b></center>	

<?php
# una nueva funcion

function ahorasi(){
	# aqui definiremos a $Pepe como global
	# la función leerá su valor externo
			global $Pepe;

   echo "<br><br> Hemos asignado ámbito global a la variable";
   echo "<br>ahora Pepe aparecerá";
   echo "<br>El valor de la variable  Pepe es: ", $Pepe;

}
# hemos cerrado ya la funcion con la llave. 
# Tendremos que invocarla para que se ejecute ahora
ahorasi();
?>

<center><b><br>Un solo nombre y dos <i>variables distintas</i></b><br>
Dentro de la función el valor de la variable es <br></center>

<?php
function cambiaPepa(){

	$Pepa="Ahora voy a llamarme Luisa por un ratito";
	
	echo "<br>",$Pepa;
}

cambiaPepa();
?>
<center>... pero después de salir de la función
                    vuelvo al valor original...</center>
<?php
echo "<br>",$Pepa;
?>


</body>
</html>
Ver ejemplo12.php Ver ejemplo13.php Ver ejemplo14.php