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”.

?>

Alcance de las variables

El alcance de una variable (scope en inglés) determina desde que porción de código PHP dicha variable es accesible. Una variable definida en el cuerpo del script (es decir fuera de una function o class) tiene un alcance global, y puede ser accedida por el script durante cualquier momento de su ejecución. Una variable dentro de una función no está disponible al resto del programa, externo a dicha función, y por ello tiene un alcance local; de la misma manera, las variables definidas fuera de una función tampoco pueden ser accedidas desde dentro de la función.


<?php
function mifuncion() {
echo
$pais;
}

$pais = "España";
mifuncion();
echo
$pais;
?>

Uno podría esperar al ejecutar este código que la variable $pais (su valor, España), fuera volcado dos veces a la pantalla. Sin embargo si nos tomamos la molestia de comprobarlo veremos que solo se produce un volcado.

La razón es que la variable $pais dentro de la función es considerada como una variable distinta y totalmente independiente de la variable $pais externa a la funcion.
Las operaciones con variables dentro de una función no afectan a lo que ocurre fuera de la misma, incluso aunque existan variables locales y globales con el mismo nombre.

Por eso se dice que el alcance de la variable dentro de la función es local
De hecho en el ejemplo anterior se produce el doble volcado de la variable $pais, pero su contenido es diferente, y solo se ha definido el valor de la variable externa.


<?php
function mifuncion() {
$pais = "Alemania";
echo
"\$pais dentro de la funcion vale ".$pais;
}

mifuncion(); // $pais dentro de la funcion vale Alemania

$pais = "España";
echo
"<br>";
echo
"\$pais fuera de la funcion vale ".$pais;
// $pais fuera de la función vale España

?>

La declaración Global

Mediante una declaración de variables globales, dentro de una función, permitimos que dicha función pueda acceder a variables externas a la misma:


<?php
function mifuncion() {
global
$pais;
echo
$pais;
}

$pais = "España";
mifuncion();
echo
$pais;
?>

Mediante el uso de la declaración global de la variable dentro de la función, instruimos a PHP de que no ha de crear una nueva variable local, sino que va a utilizar en la función el valor de la variable externa, con el mismo alcance que las variables externas. El resultado es que se volcará el contenido de la variable (España) dos veces, una en la ejecución normal del script y otra al ejecutarse la función llamada desde el script.

variables estáticas

Normalmente las variables declaradas dentro de una función nacen (se inicializan) cuando la función es llamada, y se borran (mueren) cuando se sale de la función. Observa el siguiente ejemplo:


<?php

Function Contador () {
$a = 0;
echo
$a;
$a++; //aumentamos en uno el valor de a
}

?>

Cada vez que llamamos a esta función (típico contador) se asigna a $a el valor 0 y se vuelca a pantalla “0″. La sentencia $a++, que a continuación incrementa la variable, no serviría de nada, ya que en cuanto la función termina la variable $a desaparece, y si volvemos a llamar la función, $a se inicializa de nuevo con valor “0″.

Para hacer una función útil para contar, la variable $a debe declararse como estática. Una variable estática existe sólo en el ámbito local de la función, pero no pierde su valor cuando la ejecución del programa abandona este ámbito:


<?php
Function Contador () {
static
$a = 0;
echo
$a;
$a++; //aumentamos en uno el valor de a
}

?>

Ahora, cada vez que llamamos a la función Contador(), se volcará en pantalla el valor de $a y se incrementará, conservando este último valor para la próxima vez que sea llamada, es decir, sin inicializar la variable cada vez. Por supuesto que las variables estáticas solo conservan su valor actualizado durante la lectura de la página. Si salimos de la página y volvemos a entrar, partimos del valor inicial.

No trackbacks yet.