Skip to content

2 ambito variables

Aquí tienes una lista de 20 ejercicios sobre el ámbito de las variables en PHP, junto con sus soluciones y el nombre sugerido para cada archivo, en formato Markdown:

# Ejercicios sobre el Ámbito de las Variables en PHP

## Ejercicio 1: Ámbito Global
**Nombre del fichero**: `ambito_global.php`
**Descripción**: Declara una variable global y accede a ella dentro de una función utilizando la palabra clave `global`.
```php
<?php
$mensaje = "Hola Mundo";

function saludar() {
    global $mensaje;
    echo $mensaje;
}

saludar();
?>

Ejercicio 2: Ámbito Local

Nombre del fichero: ambito_local.php Descripción: Declara una variable dentro de una función y accede a ella dentro de esa función.

<?php
function suma() {
    $a = 5;
    $b = 10;
    echo $a + $b;
}

suma();
?>

Ejercicio 3: Ámbito de una Variable Global sin global

Nombre del fichero: ambito_global_sin_global.php Descripción: Intenta acceder a una variable global dentro de una función sin usar global y observa el resultado.

<?php
$numero = 100;

function mostrarNumero() {
    echo $numero; // Error: variable no definida en el ámbito local
}

mostrarNumero();
?>

Ejercicio 4: Uso de $GLOBALS

Nombre del fichero: uso_globals.php Descripción: Accede a una variable global dentro de una función utilizando $GLOBALS.

<?php
$nombre = "Carlos";

function mostrarNombre() {
    echo $GLOBALS['nombre'];
}

mostrarNombre();
?>

Ejercicio 5: Ámbito de Variables Estáticas

Nombre del fichero: ambito_estatico.php Descripción: Usa una variable estática dentro de una función para mantener su valor entre llamadas.

<?php
function contador() {
    static $count = 0;
    $count++;
    echo $count;
}

contador();
contador();
contador();
?>

Ejercicio 6: Ámbito Global vs Local

Nombre del fichero: global_vs_local.php Descripción: Declara una variable global y otra con el mismo nombre en el ámbito local de una función. Observa la diferencia.

<?php
$numero = 20;

function cambiarNumero() {
    $numero = 10;
    echo "Valor local: " . $numero . "\n";
}

cambiarNumero();
echo "Valor global: " . $numero;
?>

Ejercicio 7: Ámbito con Variables de Parámetros

Nombre del fichero: ambito_parametros.php Descripción: Pasa una variable como parámetro a una función y modifica su valor dentro de la función.

<?php
function incrementar($numero) {
    $numero += 5;
    echo $numero;
}

$valor = 10;
incrementar($valor);
echo $valor; // $valor no se modifica fuera de la función
?>

Ejercicio 8: Ámbito de Variables Superglobales

Nombre del fichero: ambito_superglobales.php Descripción: Accede a una variable superglobal como $_POST dentro y fuera de una función.

<?php
$_POST['dato'] = "Ejemplo";

function mostrarDato() {
    echo $_POST['dato'];
}

mostrarDato();
?>

Ejercicio 9: Variables Estáticas y Ciclos

Nombre del fichero: estaticas_ciclos.php Descripción: Usa una variable estática en un ciclo dentro de una función y observa cómo se mantiene su valor.

<?php
function contar() {
    static $contador = 0;
    $contador++;
    echo $contador . "\n";
}

for ($i = 0; $i < 5; $i++) {
    contar();
}
?>

Ejercicio 10: Referencia a Variables Globales

Nombre del fichero: referencia_global.php Descripción: Modifica una variable global dentro de una función usando referencia.

<?php
$numero = 50;

function modificarNumero(&$num) {
    $num += 10;
}

modificarNumero($numero);
echo $numero; // Se mostrará 60
?>

Ejercicio 11: Uso de global en funciones anidadas

Nombre del fichero: global_funciones_anidadas.php Descripción: Usa global para acceder a variables globales en funciones anidadas.

<?php
$mensaje = "Hola";

function saludar() {
    global $mensaje;

    function despedir() {
        global $mensaje;
        echo $mensaje . " y adiós";
    }

    despedir();
}

saludar();
?>

Ejercicio 12: Variables Locales y Funciones Anidadas

Nombre del fichero: local_funciones_anidadas.php Descripción: Declara una variable local en una función y trata de acceder a ella desde una función anidada.

<?php
function padre() {
    $mensaje = "Hola Mundo";

    function hijo() {
        echo $mensaje; // Error: variable no definida
    }

    hijo();
}

padre();
?>

Ejercicio 13: Variables Estáticas y Recursividad

Nombre del fichero: estaticas_recursividad.php Descripción: Usa una variable estática en una función recursiva.

<?php
function factorial($n) {
    static $resultados = array();

    if ($n === 0) {
        return 1;
    }

    if (!isset($resultados[$n])) {
        $resultados[$n] = $n * factorial($n - 1);
    }

    return $resultados[$n];
}

echo factorial(5);
?>

Ejercicio 14: Referencia y Ámbito Global

Nombre del fichero: referencia_ambito_global.php Descripción: Usa una referencia para modificar una variable global dentro de una función sin usar global.

<?php
$texto = "Original";

function cambiarTexto(&$txt) {
    $txt = "Modificado";
}

cambiarTexto($texto);
echo $texto; // Se mostrará "Modificado"
?>

Ejercicio 15: Ámbito de Variables en un Archivo Includo

Nombre del fichero: ambito_include.php Descripción: Crea un archivo que incluya otro PHP y accede a una variable definida en el archivo principal desde el archivo incluído.

// archivo principal: principal.php
<?php
$nombre = "Carlos";
include 'incluido.php';
?>

// archivo incluido: incluido.php
<?php
echo "Hola, " . $nombre;
?>

Ejercicio 16: Variables Globales y Funciones Lambda

Nombre del fichero: global_lambda.php Descripción: Accede a una variable global desde una función lambda (función anónima).

<?php
$mensaje = "Hola Mundo";

$saludar = function() use ($mensaje) {
    echo $mensaje;
};

$saludar();
?>

Ejercicio 17: Variables Locales en Funciones Lambda

Nombre del fichero: local_lambda.php Descripción: Modifica una variable local dentro de una función lambda.

<?php
$contador = 0;

$incrementar = function() use (&$contador) {
    $contador++;
};

$incrementar();
$incrementar();
echo $contador; // Se mostrará 2
?>

Ejercicio 18: Variables en el Ámbito de Clase

Nombre del fichero: ambito_clase.php Descripción: Declara una variable en el ámbito de una clase y accede a ella desde un método.

<?php
class Persona {
    private $nombre = "Ana";

    public function mostrarNombre() {
        echo $this->nombre;
    }
}

$persona = new Persona();
$persona->mostrarNombre();
?>

Ejercicio 19: Ámbito Global en Métodos de Clase

Nombre del fichero: global_metodos_clase.php Descripción: Accede a una variable global dentro de un método de una clase.

<?php
$ciudad = "Madrid";

class Lugar {
    public function mostrarCiudad() {
        global $ciudad;
        echo $ciudad;
    }
}

$lugar = new Lugar();
$lugar->mostrarCiudad();
?>

Ejercicio 20: Variables Estáticas en Métodos de Clase

Nombre del fichero: estaticas_metodos_clase.php Descripción: Usa una variable estática dentro de un método de una clase.

<?php
class Contador {
    public function incrementar() {
        static $count = 0;
        $count++;
        echo $count . "\n";
    }
}

$contador1 = new Contador();
$contador2 = new Contador();

$contador1->incrementar();
$contador2->incrementar();
$contador1->incrementar();
?>
Estos ejercicios cubren los conceptos fundamentales del ámbito de las variables en PHP, incluyendo variables globales, locales, estáticas, y su comportamiento en diferentes contextos como funciones anidadas,

 clases, y funciones lambda.