Tutorial PHP

Variables en funciones, locales, estáticas, globales

Variables en funciones

Variables locales

Para definir una variable local, simplemente se asigna un valor a la variable:

function Iva($fValue) {

// $fIVA es una variable local

$fIVA = $fValue * 0.16;

Echo("El IVA de $fValue es $fIVA<BR>");

}

Iva(2350);


Variables estáticas

Si queremos que la variable local conserve el valor de invocación a invocación de la función, basta declararla como estática:

 

<!-- Funcion2.php -->

function Counter() {

static $count = 0;

$count2 = 0;

$count2++;

Echo("Count vale $count y count2 vale $count2<BR>");

$count++;

}

Counter();

Counter();

Counter();

muestra en la página:

Count vale 0 y count2 vale 1

Count vale 1 y count2 vale 1

Count vale 2 y count2 vale 1

 

La inicialización de la variable sólo tiene lugar la primera vez que se invoca Counter.

 

Acceso a variables globales

Este es uno de los puntos en los que PHP se diferencia de C y es un punto importante y causa de bastantes quebraderos de cabeza para el primerizo en PHP.

Para acceder a una variable global desde dentro de una función es imprescindible declararla dentro de la función como global $variable, ya que de otro modo PHP pensará que se desea hacer referencia a una variable local:


<!-- Funcion3.php -->

function TouchGlobal() {

global $strCadena;

$strCadena = "¡Tocada!";

$nValue = 7;


Echo("Dentro de TouchGlobal ahora \$strCadena vale " .

$strCadena " . "y \$nValue vale $nValue<BR>");

}

$strCadena = "Hola mundo";

$nValue = 4;

Echo("\$strCadena vale $strCadena y \$nValue vale $nValue<BR>");

TouchGlobal();

Echo("\$strCadena ahora vale $strCadena y \$nValue sigue ".

"valiendo $nValue<BR>");


Como se ve, no es necesario que la variable global esté en el fichero físicamente delante de la función, basta con que haya sido inicializada antes de llamar a la función. Los cambios realizados a una variable global dentro de una función, permanecen cuando se vuelve de la función.

Otra forma de acceder a las variables globales es mediante una indexación asociativa del array $GLOBALS.


<<<Anterior - Siguiente>>>


¡Visita también estos sitios interesantes!

Sitio alojado en Yaia.com