Actualizado el 14-01-2007
versión para imprimir
Variables
Concepto
Las variables son un espacio o area de memoria dispuesta para almacenar un valor para su posterior uso por el script, que tiene asignado un identificador (nombre). El valor puede ser una cadena o un numero.
En php no hace falta declarar una variable antes de su uso, ni establecer su tipo. Su nombre puede ser una combinacion de letras (a-Z), números y guiones bajos, precedidos con el signo $. El primer carácter no puede ser un número, y php diferencia entre mayusculas y minúsculas.
$var no es igual a $Var
Para utilizar una variable basta con asignarle un valor, usando para ello el operador =
Si el valor es una cadena, necesita ir entrecomillado.
<?php
$ciudad = "madrid"; // el valor de ciudad es madrid
$ciudad = "zaragoza"; // ciudad ahora es zaragoza
$Ciudad = "barcelona"; // esta es otra variable distinta
?>
Dependiendo de la información que contenga, tenemos diversos tipos de variables:
- integer contiene un número entero
- double contiene un número con decimales
- string una cadena de caracteres
<?php
$int = 1; // integro
$doub = 1,5; // double
$string1 = "1"; // string
$string2 = "uno"; // string
$fecha = date(Y); // tambien podemos asignar a variables el resultado de
// una función.
?>
Como ves, el valor de una variable ha de asignarse entrecomillado, salvo que se trate de un valor numérico.
tipado (casting) de variables
Como hemos dicho, a diferencia de otros lenguajes, al declarar una variable no tenemos que indicar a que tipo pertenece. Php lo hará por nosotros de acuerdo con su contenido y el contexto.
Aunque no es necesario, podemos especificar el tipo de la variable, o forzar su conversion. Forzar un tipo de variable puede ser muy util, por ejemplo para validar la entrada de datos por usuarios desde un formulario.
<?php
$cadena="5"; //esto es una cadena
$entero=3; //esto es un entero
echo $cadena+$entero //daria el resultado 8
$mivar = "3"; // $mivar es tipo string
$mivar = 2 + $mivar; // automaticamente se convierte a tipo integer
// $mivar ahora vale 5
$mivar = (string)123;// creamos $mivar como cadena
settype($mivar, "double"); // forzamos su cambio a tipo double
// el cambio forzado afecta al valor de la
// variable:
// $mivar = 3.5;
// $mivar = (integer)$mivar; -> valor 3
// $mivar = (boolean)$mivar; -> valor 1
?>
Averiguando el tipo de una variable
Si necesitamos saber a que tipo pertenece una variable podemos usar la función gettype():
<?php
$mivar = "123";
echo gettype($mivar); // string
$mivar = 123;
echo gettype($mivar); // integer
?>
Chequeando tipos concretos
Si lo que necesitamos es saber si se trata de un tipo concreto de variables, podemos usar una funcion ad hoc: Todas ellas tomas como parámetro el nombre de la función a chequear, y devuelven verdadero o falso
Un dato importante a tener en cuenta es que una variable, sea cual sea su tipo, si es pasada via GET o POST automáticamente se convierte en tipo string. Por ello no podremos utilizar is_integer, por ejemplo, sino is_numeric,, que no indaga acerca del tipo de variable, sino acerca de los caracteres que la componen.
- is_array()
- is_bool()
- is_double()
- is_float()
- is_int()
- is_integer()
- is_long()
- is_null()
- is_numeric()
- is_object()
- is_real()
- is_resource()
- is_scalar()
- is_string()
valores por referencia
A partir de php 4 ademas de pasar un valor a una variable por asignación, podemos pasarselo por referencia
Para ello creamos una nueva variable que referencia ( "se convierte en un alias de" o "apunta a") la variable original. Los cambios a la nueva variable afectan a la original, y viceversa.
Para asignar por referencia, simplemente se antepone un ampersand (&) al comienzo de la variable cuyo valor se está asignando.
<?php
$a = 5; // $a vale 5
$b = &$a; // $b vale 5
$b = $b + 3; // $b vale 8. $a TAMBIEN vale 8 ahora.
/* los valores serán $a = 8 y $b = 8; */
?>
variables constantes
Son aquellas cuyo valor no va a cambiar a lo largo de la ejecución del script. Para asignarles un valor se usa la función define()
<?php
define ("AUTOR_EMAIL","blah@miemail.com");
echo AUTOR_EMAIL; // imprime blah@miemail.com
// observa que las variables constantes
// no necesitan del signo $
// Las constantes NO pueden ir entrecomilladas.
?>
Podemos utilizar la funcion defined() para chequear si una constante esta definida o no.
Por último, PHP ofrece diversas constantes predefinidas:
<?php
echo __FILE__ ."<br>"; // nombre del archivo
echo __LINE__ ."<br>"; // numero de linea de codigo
echo PHP_VERSION."<br>"; // numero de version php
echo PHP_OS ."<br>"; // sistema operativo
echo TRUE."<br>"; // valor verdadero (1)
echo FALSE."<br>"; // valor falso (0 o cadena vacia)
echo NULL."<br>"; // sin valor
?>
Variables de variables
Podemos reutilizar el valor de una variable como nombre de otra variable
<?php
$var = "ciudad"; // tenemos una variable var, valor ciudad
$$var = "madrid"; // creamos una variable llamada ciudad, con
// valor madrid.
// echo $ciudad nos daría "madrid".
?>