Apuntes sobre Php

PHP: Porque a veces necesitas un poco de caos en tu vida.

Estructuras de Control en PHP

Las estructuras de control permiten al script tomar decisiones lógicas, como “si llueve, coge el paraguas; si hace sol, vete a la playa”. En PHP, tienes varias herramientas para controlar el flujo del programa, desde condicionales hasta bucles.

Estructuras disponibles

PHP ofrece las siguientes estructuras de control:

  • if, else, elseif: Condiciones simples o múltiples.
  • switch: Evalúa una variable contra varios valores.
  • while, do/while: Bucles que repiten mientras se cumpla una condición.
  • for, foreach: Bucles para iterar un número fijo de veces o sobre arrays.

if, else

La estructura if evalúa una condición entre paréntesis. Si es true, ejecuta un bloque de código; si es false, ignora el bloque. Con else, puedes especificar qué hacer si la condición no se cumple:

<?php
$edad = 17;
if ($edad >= 18) {
    echo "Puedes sacar el coche\n";
} else {
    echo "Ve en autobús\n";
}
?>

Nota: else es opcional y no acepta condiciones propias. Para condiciones adicionales, usa elseif.

Usa llaves {} para bloques de varias líneas, pero son opcionales para una sola línea:

<?php
$user = "pepe";
if ($user === "pepe")
    echo "Bienvenido, Pepe\n";
?>

Condiciones complejas

Usa operadores lógicos (&&, ||, !) y paréntesis para condiciones más avanzadas:

<?php
$edad = 20;
$carnet_conducir = 1;
if (($edad >= 18) && ($carnet_conducir === 1)) {
    echo "Puedes conducir\n";
}
?>

Nota: Si la variable viene de un formulario, fuerza el tipo con casting antes de compararla para evitar resultados inesperados:

<?php
$edad = "20"; // De un formulario
if ((int)$edad >= 18) {
    echo "Mayor de edad\n";
}
?>

if, elseif, else

Evalúa múltiples condiciones con elseif (o else if, que es equivalente):

<?php
$user = "juan";
if ($user === "pepe") {
    echo "Código para Pepe\n";
} elseif ($user === "juan") {
    echo "Código para Juan\n";
} else {
    echo "Código para otros\n";
}
?>

Operador ternario

El operador ternario es una forma abreviada de if/else para condiciones simples:
(condición) ? valor_si_verdadera : valor_si_falsa:

<?php
$num = 1;
$resultado = ($num === 1) ? "$num es igual a 1" : "$num no es igual a 1";
echo "$resultado\n";
?>

Equivale a:

<?php
$num = 1;
if ($num === 1) {
    $resultado = "$num es igual a 1";
} else {
    $resultado = "$num no es igual a 1";
}
echo "$resultado\n";
?>

Otro ejemplo:

            <?php
$edad = 18;
$mensaje = ($edad >= 18) ? "coge el coche." : "ve en autobús.";
echo $mensaje;  // coge el coche
?>

switch

switch es una alternativa legible para comparar una variable contra múltiples valores:

<?php
$op = "a";
switch ($op) {
    case "a":
        echo "Opción A seleccionada\n";
        break;
    case "b":
        echo "Opción B seleccionada\n";
        break;
    case "c":
        echo "Opción C seleccionada\n";
        break;
    default:
        echo "Opción no válida\n";

    // $op === "a", muestra "Opción A seleccionada"
}
?>

Nota: Usa break; al final de cada caso; sin él, el código "cae" al siguiente caso y lo ejecuta también. default es opcional y actúa como el else del switch.

Sintaxis alternativa

Para if, elseif, y else, puedes usar : y endif en lugar de llaves, útil en plantillas HTML:

<?php
$user = "pepe";
if ($user === "pepe"):
    echo "Código para Pepe\n";
elseif ($user === "juan"):
    echo "Código para Juan\n";
else:
    echo "Código para otros\n";
endif;
?>

Bucles: while

Los bucles repiten código mientras se cumpla una condición. while evalúa la condición antes de cada iteración:

<?php
$i = 1;
while ($i <= 10) {
    echo "$i\n";
    $i++;
    // 1 2 3 4 5 6 7 8 9 10
}
?>

Nota: Inicializa siempre la variable de control antes del bucle y asegúrate de que la condición acabe siendo false (con $i++ o similar), o crearás un bucle infinito.

Sintaxis alternativa: while ... endwhile:

<?php
$i = 1;
while ($i <= 10):
    echo "$i\n";
    $i++;
endwhile;
    // 1 2 3 4 5 6 7 8 9 10
?>

do/while

do/while ejecuta el código al menos una vez, evaluando la condición después:

<?php
$i = 11;
do {
    echo "$i\n"; // Se ejecuta una vez, aunque $i > 10
    $i++;
} while ($i <= 10);
    // 11
?>

for

for es ideal para iteraciones con un número fijo de repeticiones: for(inicio; condición; incremento):

<?php
for ($i = 1; $i <= 10; $i++) {
    echo "$i\n";
}
?>

Nota: Los tres parámetros del for: inicio (inicializa la variable, $i = 1), condición (se evalúa antes de cada iteración, $i <= 10), incremento (se ejecuta al final de cada iteración, $i++).

Sintaxis alternativa: for ... endfor:

<?php
for ($i = 1; $i <= 10; $i++):
    echo "$i\n";
endfor;
?>

foreach

foreach itera sobre arrays (visto en la lección de arrays):

<?php
$ciudades = ["Madrid", "Barcelona"];
foreach ($ciudades as $ciudad) {
    echo "$ciudad\n";
}
    // Madrid Barcelona
?>

O con claves y valores:

<?php
$capitales = ["España" => "Madrid"];
foreach ($capitales as $pais => $capital) {
    echo "$pais: $capital\n";
}
    // España: Madrid
?>

Operadores de comparación

Usa operadores estrictos (===, !==) para evitar errores con tipos mixtos:

<?php
$valor = "1";
if ($valor === 1) {
    echo "Igual en valor y tipo\n";
} else {
    echo "Diferente en valor o tipo\n";
}
?>

El operador spaceship (<=>) compara dos valores, devolviendo -1 (menor), 0 (igual), o 1 (mayor):

<?php
$num = 5;
$resultado = ($num <=> 10); // -1 (5 < 10)
echo "$resultado\n";
?>

Comprobación de variables en condiciones: isset(), empty(), is_null()

En PHP, muchas decisiones en tiempo de ejecución dependen del contenido o existencia de variables. Por eso, al usar estructuras de control como if, else o switch, es fundamental asegurarse de que las variables involucradas estén definidas y tengan un valor válido.

PHP ofrece funciones específicas para este propósito, que se utilizan habitualmente dentro de condiciones:

Función Devuelve true si... Uso habitual
isset($var) La variable está definida y no es null if (isset($_POST["nombre"]))
empty($var) La variable no tiene valor útil: "", 0, null, false, [], etc. if (empty($_GET["buscar"]))
is_null($var) La variable vale exactamente null if (is_null($resultado))

Estas funciones no alteran el flujo de un programa por sí mismas, pero se combinan con estructuras condicionales para tomar decisiones seguras, especialmente al trabajar con formularios o entrada de datos externos.

Ejemplo: validar una entrada opcional de formulario:

<?php
// Supongamos que el formulario POST puede contener un campo "nombre"
$nombre = $_POST["nombre"] ?? null;

if (!isset($nombre)) {
    echo "No se envió el campo 'nombre'.";
} elseif (empty($nombre)) {
    echo "El nombre está vacío.";
} else {
    echo "Hola, $nombre";
}
?>

Recapitulación

  • if / elseif / else: ejecuta bloques según condiciones. El operador ternario ? : abrevia el if/else de una sola línea.
  • switch: compara una variable contra múltiples valores. Recuerda siempre el break.
  • while: repite mientras la condición sea true; evalúa antes de ejecutar. do/while ejecuta al menos una vez.
  • for: ideal para un número conocido de iteraciones. foreach: para recorrer arrays.
  • Todas las estructuras admiten sintaxis alternativa con : y end*, útil en plantillas HTML.
  • isset(), empty() e is_null() permiten comprobar la existencia y el contenido de variables antes de usarlas en condiciones.

En la próxima lección: errores comunes al usar estructuras de control y cómo evitarlos.

TOP