Hasta ahora hemos visto cómo escribir nuestros primeros scripts en PHP, cómo crear variables, cómo mostrar información en pantalla y cómo trabajar con distintos tipos de datos. Todo eso nos permite guardar y enseñar información, pero todavía nos falta algo fundamental: hacer que el programa tome decisiones.
Un programa real no ejecuta siempre las mismas instrucciones de forma lineal. A veces debe comprobar una condición y actuar de una manera u otra. Por ejemplo:
- Un usuario puede ser mayor o menor de edad.
- Una contraseña puede ser correcta o incorrecta.
- Un producto puede tener stock o estar agotado.
- Una nota puede estar aprobada o suspensa.
- Un usuario puede ser administrador o cliente normal.
Para resolver este tipo de situaciones utilizamos condicionales.
En PHP, igual que en muchos otros lenguajes de programación, las estructuras condicionales nos permiten ejecutar un bloque de código solamente si se cumple una condición.
1. ¿Qué es una condición?
Una condición es una expresión que PHP puede evaluar como verdadera o falsa.
Por ejemplo:
$edad = 20;
$edad >= 18
La expresión anterior comprueba si la variable $edad es mayor o igual que 18.
Como $edad vale 20, la condición se cumple. Es decir, PHP la considera verdadera.
Si cambiamos el valor:
$edad = 15;
$edad >= 18
Ahora la condición no se cumple, porque 15 no es mayor o igual que 18.
Cuando trabajamos con condicionales, PHP evalúa expresiones que normalmente devuelven un valor booleano:
true
false
Aunque en PHP también hay valores que pueden comportarse como verdaderos o falsos, como veremos más adelante.
2. El condicional if

La estructura condicional más básica es if.
Su traducción sería:
Si se cumple esta condición, ejecuta este bloque de código.
La estructura general es:
if (condicion) {
// Código que se ejecuta si la condición es verdadera
}
Ejemplo básico:
<?php
$edad = 20;
if ($edad >= 18) {
echo "Eres mayor de edad.";
}
?>
En este caso, como $edad vale 20, la condición $edad >= 18 se cumple y se mostrará el mensaje:
Eres mayor de edad.
Si cambiamos la edad:
<?php
$edad = 15;
if ($edad >= 18) {
echo "Eres mayor de edad.";
}
?>
No se mostrará nada, porque la condición no se cumple.
Esto es importante: si la condición de un if no se cumple, PHP ignora el bloque de código que está dentro de las llaves.
3. Ejemplo práctico: comprobar una nota
Vamos a imaginar que estamos creando una pequeña aplicación para mostrar si un alumno ha aprobado.
<?php
$nota = 7;
if ($nota >= 5) {
echo "Has aprobado.";
}
?>
Como la nota es 7, se muestra:
Has aprobado.
Pero si la nota fuese un 3, no aparecería ningún mensaje. Eso no es muy útil para el usuario, porque si ha suspendido también deberíamos informarle.
Para eso usamos else.
4. El condicional if...else

La estructura if...else permite ejecutar un bloque de código cuando la condición se cumple y otro bloque diferente cuando no se cumple.
Su traducción sería:
Si se cumple esta condición, haz esto. Si no se cumple, haz esto otro.
Estructura general:
if (condicion) {
// Código si la condición es verdadera
} else {
// Código si la condición es falsa
}
Ejemplo:
<?php
$nota = 3;
if ($nota >= 5) {
echo "Has aprobado.";
} else {
echo "Has suspendido.";
}
?>
En este caso, como $nota vale 3, la condición $nota >= 5 no se cumple. Por tanto, PHP ejecuta el bloque del else.
Resultado:
Has suspendido.
Ahora el programa ya responde en los dos casos posibles.
5. Ejemplo práctico: acceso por edad
Imaginemos una web donde solo pueden acceder personas mayores de edad.
<?php
$edad = 17;
if ($edad >= 18) {
echo "Puedes acceder al contenido.";
} else {
echo "No puedes acceder. Debes ser mayor de edad.";
}
?>
Este tipo de comprobación es muy habitual en aplicaciones web. PHP recibe un dato, lo comprueba y decide qué respuesta debe mostrar.
Podríamos mejorar el mensaje usando la propia edad del usuario:
<?php
$edad = 17;
if ($edad >= 18) {
echo "Tienes $edad años. Puedes acceder al contenido.";
} else {
echo "Tienes $edad años. No puedes acceder todavía.";
}
?>
Resultado:
Tienes 17 años. No puedes acceder todavía.
6. Operadores de comparación
Para crear condiciones necesitamos comparar valores. PHP dispone de varios operadores de comparación.
Los más utilizados son:
| Operador | Significado | Ejemplo |
|---|---|---|
== | Igual en valor | $a == $b |
=== | Igual en valor y tipo | $a === $b |
!= | Distinto en valor | $a != $b |
!== | Distinto en valor o tipo | $a !== $b |
> | Mayor que | $a > $b |
< | Menor que | $a < $b |
>= | Mayor o igual que | $a >= $b |
<= | Menor o igual que | $a <= $b |
Vamos a verlo con ejemplos.
<?php
$numero = 10;
if ($numero > 5) {
echo "El número es mayor que 5.";
}
?>
Aquí la condición se cumple porque 10 es mayor que 5.
Otro ejemplo:
<?php
$usuario = "admin";
if ($usuario == "admin") {
echo "Bienvenido, administrador.";
}
?>
La condición se cumple porque el contenido de $usuario es igual a "admin".
7. Diferencia entre == y ===
Este punto es muy importante en PHP.
El operador == compara si dos valores son iguales, pero puede hacer conversiones automáticas de tipo.
El operador === compara si dos valores son iguales y además son del mismo tipo.
Ejemplo:
<?php
$numero = 5;
$texto = "5";
if ($numero == $texto) {
echo "Son iguales usando ==.";
}
?>
Este código muestra:
Son iguales usando ==.
PHP considera que 5 y "5" son iguales en valor, aunque uno sea un número entero y el otro sea una cadena de texto.
Ahora usamos ===:
<?php
$numero = 5;
$texto = "5";
if ($numero === $texto) {
echo "Son iguales usando ===.";
} else {
echo "No son exactamente iguales.";
}
?>
Resultado:
No son exactamente iguales.
¿Por qué? Porque $numero es un entero y $texto es una cadena.
En programación real, especialmente cuando trabajemos con formularios, bases de datos y sesiones, conviene acostumbrarse a usar === cuando queramos comprobar igualdad estricta.
8. Ejemplo práctico: comprobar usuario y contraseña
Vamos a simular un inicio de sesión muy sencillo.
<?php
$usuario = "antonio";
$password = "1234";
if ($usuario === "antonio" && $password === "1234") {
echo "Acceso permitido.";
} else {
echo "Usuario o contraseña incorrectos.";
}
?>
Aquí aparecen dos condiciones al mismo tiempo:
$usuario === "antonio"
y
$password === "1234"
Para que el acceso sea permitido, ambas deben cumplirse.
Para unir condiciones usamos operadores lógicos.
9. Operadores lógicos
Los operadores lógicos permiten combinar varias condiciones.
Los principales son:
| Operador | Nombre | Significado |
|---|---|---|
&& | AND | Se cumplen todas las condiciones |
| ` | ` | |
! | NOT | Niega una condición |
Aunque PHP también permite escribir and y or, en este nivel es recomendable usar && y ||, porque son más habituales y evitan algunos problemas de prioridad.
10. Uso de &&: todas las condiciones deben cumplirse
El operador && significa “y”.
Se utiliza cuando necesitamos que se cumplan varias condiciones a la vez.
Ejemplo:
<?php
$edad = 22;
$tieneEntrada = true;
if ($edad >= 18 && $tieneEntrada === true) {
echo "Puedes entrar al evento.";
} else {
echo "No puedes entrar al evento.";
}
?>
Para poder entrar al evento deben cumplirse dos cosas:
La persona debe tener al menos 18 años.
La persona debe tener entrada.
Si una de las dos falla, el resultado será negativo.
Podemos escribirlo también de forma un poco más natural:
<?php
$edad = 22;
$tieneEntrada = true;
if ($edad >= 18 && $tieneEntrada) {
echo "Puedes entrar al evento.";
} else {
echo "No puedes entrar al evento.";
}
?>
Cuando una variable ya contiene true o false, no siempre es necesario compararla con true.
11. Uso de ||: basta con que se cumpla una condición
El operador || significa “o”.
Se utiliza cuando basta con que se cumpla una de varias condiciones.
Ejemplo:
<?php
$rol = "editor";
if ($rol === "admin" || $rol === "editor") {
echo "Puedes acceder al panel de gestión.";
} else {
echo "No tienes permisos para acceder.";
}
?>
En este caso, el usuario puede acceder si su rol es "admin" o si su rol es "editor".
Como $rol vale "editor", la condición se cumple.
Este tipo de comprobación se usa mucho en aplicaciones web con distintos tipos de usuario.
12. Uso de !: negar una condición
El operador ! sirve para negar una condición.
Es decir, convierte true en false y false en true.

Ejemplo:
<?php
$sesionIniciada = false;
if (!$sesionIniciada) {
echo "Debes iniciar sesión para continuar.";
}
?>
La variable $sesionIniciada vale false.
Al escribir:
!$sesionIniciada
Estamos diciendo:
Si NO hay sesión iniciada…
Por eso se muestra el mensaje.
Otro ejemplo:
<?php
$productoDisponible = false;
if (!$productoDisponible) {
echo "El producto no está disponible.";
} else {
echo "Puedes comprar el producto.";
}
?>
13. elseif: comprobar varias posibilidades
A veces no tenemos solo dos caminos posibles.
Por ejemplo, una nota no es simplemente aprobado o suspenso. También podemos querer distinguir entre suspenso, aprobado, notable y sobresaliente.
Para eso usamos elseif.

La estructura general es:
if (condicion1) {
// Código si se cumple la primera condición
} elseif (condicion2) {
// Código si no se cumple la primera, pero sí la segunda
} elseif (condicion3) {
// Código si se cumple la tercera
} else {
// Código si no se cumple ninguna de las anteriores
}
Ejemplo:
<?php
$nota = 8;
if ($nota < 5) {
echo "Suspenso.";
} elseif ($nota < 7) {
echo "Aprobado.";
} elseif ($nota < 9) {
echo "Notable.";
} else {
echo "Sobresaliente.";
}
?>
Resultado:
Notable.
Es importante entender cómo lee PHP este bloque:
Primero comprueba si $nota < 5.
Como 8 < 5 es falso, pasa al siguiente.
Después comprueba si $nota < 7.
Como 8 < 7 es falso, pasa al siguiente.
Después comprueba si $nota < 9.
Como 8 < 9 es verdadero, ejecuta ese bloque y ya no sigue comprobando más.
Por eso muestra "Notable.".
14. Cuidado con el orden de las condiciones
El orden de las condiciones importa muchísimo.
Imagina este ejemplo incorrecto:
<?php
$nota = 8;
if ($nota >= 5) {
echo "Aprobado.";
} elseif ($nota >= 7) {
echo "Notable.";
} elseif ($nota >= 9) {
echo "Sobresaliente.";
} else {
echo "Suspenso.";
}
?>
Aunque la nota sea 8, el programa mostrará:
Aprobado.
¿Por qué?
Porque la primera condición $nota >= 5 ya se cumple. PHP entra en ese bloque y no sigue comprobando los demás elseif.
Para corregirlo, deberíamos empezar por las notas más altas:
<?php
$nota = 8;
if ($nota >= 9) {
echo "Sobresaliente.";
} elseif ($nota >= 7) {
echo "Notable.";
} elseif ($nota >= 5) {
echo "Aprobado.";
} else {
echo "Suspenso.";
}
?>
Ahora sí se mostrará:
Notable.
Esta idea es fundamental: en una cadena de if, elseif y else, PHP ejecuta el primer bloque cuya condición sea verdadera.
15. Ejemplo práctico completo: sistema de notas
Vamos a crear un ejemplo algo más completo. Queremos mostrar la calificación de un alumno, pero también controlar que la nota sea válida.
Una nota válida debería estar entre 0 y 10.
<?php
$nota = 11;
if ($nota < 0 || $nota > 10) {
echo "La nota introducida no es válida.";
} elseif ($nota >= 9) {
echo "Sobresaliente.";
} elseif ($nota >= 7) {
echo "Notable.";
} elseif ($nota >= 5) {
echo "Aprobado.";
} else {
echo "Suspenso.";
}
?>
En este caso, como la nota es 11, mostramos:
La nota introducida no es válida.
La primera condición comprueba si la nota está fuera del rango permitido:
$nota < 0 || $nota > 10
Es decir:
Si la nota es menor que 0 o mayor que 10, no es válida.
Este tipo de validaciones son muy habituales en aplicaciones reales. No basta con procesar los datos; primero debemos comprobar que tienen sentido.
16. Condicionales anidados
Un condicional anidado es un if dentro de otro if.
Se utiliza cuando una decisión depende de otra decisión anterior.
Ejemplo:
<?php
$usuario = "antonio";
$password = "1234";
$cuentaActiva = true;
if ($usuario === "antonio" && $password === "1234") {
if ($cuentaActiva) {
echo "Bienvenido al sistema.";
} else {
echo "Tu cuenta está desactivada.";
}
} else {
echo "Usuario o contraseña incorrectos.";
}
?>
Aquí primero comprobamos si el usuario y la contraseña son correctos.
Solo si son correctos, comprobamos después si la cuenta está activa.
Esto tiene sentido porque no necesitamos comprobar si la cuenta está activa cuando el usuario ni siquiera se ha identificado correctamente.
Sin embargo, hay que tener cuidado. Si anidamos demasiados condicionales, el código puede volverse difícil de leer.
17. Mejorando la lectura de condicionales
Observa este código:
<?php
$edad = 20;
$tieneEntrada = true;
$estaVetado = false;
if ($edad >= 18) {
if ($tieneEntrada) {
if (!$estaVetado) {
echo "Puedes entrar.";
} else {
echo "No puedes entrar porque estás vetado.";
}
} else {
echo "No puedes entrar porque no tienes entrada.";
}
} else {
echo "No puedes entrar porque eres menor de edad.";
}
?>
Funciona, pero empieza a ser incómodo.
Podemos escribirlo de una forma más clara usando varias condiciones:
<?php
$edad = 20;
$tieneEntrada = true;
$estaVetado = false;
if ($edad < 18) {
echo "No puedes entrar porque eres menor de edad.";
} elseif (!$tieneEntrada) {
echo "No puedes entrar porque no tienes entrada.";
} elseif ($estaVetado) {
echo "No puedes entrar porque estás vetado.";
} else {
echo "Puedes entrar.";
}
?>
Este segundo código suele ser más fácil de leer porque va descartando casos.
Primero mira si la edad no es válida.
Después mira si no tiene entrada.
Después mira si está vetado.
Y si no ocurre nada de eso, permite entrar.
Este estilo será muy útil cuando empecemos a validar formularios.
18. Condicionales con cadenas de texto
Los condicionales no solo sirven para números. También podemos comparar cadenas de texto.
Ejemplo:
<?php
$dia = "lunes";
if ($dia === "lunes") {
echo "Hoy empieza la semana.";
} else {
echo "Hoy no es lunes.";
}
?>
Otro ejemplo:
<?php
$estadoPedido = "pendiente";
if ($estadoPedido === "pendiente") {
echo "Tu pedido está pendiente de preparación.";
} elseif ($estadoPedido === "enviado") {
echo "Tu pedido ya ha sido enviado.";
} elseif ($estadoPedido === "entregado") {
echo "Tu pedido ha sido entregado.";
} else {
echo "Estado del pedido desconocido.";
}
?>
Este ejemplo se parece más a una situación real. Muchas aplicaciones trabajan con estados: usuarios activos o inactivos, pedidos pendientes, reservas aceptadas, productos agotados, pagos confirmados, etc.
19. Ejemplo práctico: estado de una reserva
Imaginemos que estamos desarrollando una aplicación de reservas.
Una reserva puede estar en distintos estados:
pendiente, aceptada, cancelada o finalizada.
<?php
$estadoReserva = "pendiente";
if ($estadoReserva === "pendiente") {
echo "La reserva está pendiente de confirmación.";
} elseif ($estadoReserva === "aceptada") {
echo "La reserva ha sido aceptada.";
} elseif ($estadoReserva === "cancelada") {
echo "La reserva ha sido cancelada.";
} elseif ($estadoReserva === "finalizada") {
echo "La reserva ya ha finalizado.";
} else {
echo "El estado de la reserva no es válido.";
}
?>
Este tipo de estructura se usará mucho cuando trabajemos con bases de datos. Por ejemplo, podemos guardar en una tabla el estado de una reserva y después mostrar un mensaje diferente según ese estado.
20. La estructura switch
Cuando tenemos que comparar una misma variable con muchos valores posibles, podemos usar switch.

Por ejemplo, este código con if funciona perfectamente:
<?php
$dia = "martes";
if ($dia === "lunes") {
echo "Inicio de semana.";
} elseif ($dia === "martes") {
echo "Segundo día de la semana.";
} elseif ($dia === "miércoles") {
echo "Mitad de semana.";
} elseif ($dia === "jueves") {
echo "Casi viernes.";
} elseif ($dia === "viernes") {
echo "Último día laboral.";
} else {
echo "Fin de semana o día no reconocido.";
}
?>
Pero también podemos escribirlo con switch:
<?php
$dia = "martes";
switch ($dia) {
case "lunes":
echo "Inicio de semana.";
break;
case "martes":
echo "Segundo día de la semana.";
break;
case "miércoles":
echo "Mitad de semana.";
break;
case "jueves":
echo "Casi viernes.";
break;
case "viernes":
echo "Último día laboral.";
break;
default:
echo "Fin de semana o día no reconocido.";
break;
}
?>
El switch compara el valor de $dia con cada uno de los case.
Cuando encuentra una coincidencia, ejecuta el código correspondiente.
El default se ejecuta si no coincide con ningún case.
21. La importancia de break en switch
En un switch, normalmente escribimos break al final de cada case.
El break sirve para salir del switch.
Si olvidamos el break, PHP puede seguir ejecutando los siguientes casos aunque no correspondan.
Ejemplo problemático:
<?php
$rol = "editor";
switch ($rol) {
case "admin":
echo "Acceso total.";
case "editor":
echo "Acceso a edición.";
case "cliente":
echo "Acceso a compras.";
default:
echo "Rol desconocido.";
}
?>
Si $rol vale "editor", PHP entra en el caso "editor", pero como no hay break, seguirá ejecutando también los bloques siguientes.
Por eso deberíamos escribirlo así:
<?php
$rol = "editor";
switch ($rol) {
case "admin":
echo "Acceso total.";
break;
case "editor":
echo "Acceso a edición.";
break;
case "cliente":
echo "Acceso a compras.";
break;
default:
echo "Rol desconocido.";
break;
}
?>
22. Ejemplo práctico con switch: menú de opciones
Imaginemos que tenemos una variable que representa la opción seleccionada por un usuario en un menú.
<?php
$opcion = 2;
switch ($opcion) {
case 1:
echo "Has seleccionado ver productos.";
break;
case 2:
echo "Has seleccionado ver el carrito.";
break;
case 3:
echo "Has seleccionado finalizar compra.";
break;
case 4:
echo "Has seleccionado salir.";
break;
default:
echo "Opción no válida.";
break;
}
?>
Este tipo de estructura es útil cuando estamos gestionando opciones cerradas y conocidas.
23. match: una alternativa moderna a switch
En versiones modernas de PHP existe también la expresión match.
Se parece a switch, pero tiene algunas diferencias importantes:
matchdevuelve un valor.- No necesita
break. - Compara de forma estricta.
- Suele ser más compacto.
Ejemplo:
<?php
$estadoPedido = "enviado";
$mensaje = match ($estadoPedido) {
"pendiente" => "Tu pedido está pendiente.",
"enviado" => "Tu pedido ha sido enviado.",
"entregado" => "Tu pedido ha sido entregado.",
"cancelado" => "Tu pedido ha sido cancelado.",
default => "Estado desconocido.",
};
echo $mensaje;
?>
Resultado:
Tu pedido ha sido enviado.
match es muy útil cuando queremos asignar un valor dependiendo de otro.
Otro ejemplo:
<?php
$rol = "admin";
$permisos = match ($rol) {
"admin" => "Acceso total",
"editor" => "Puede editar contenido",
"cliente" => "Puede hacer compras",
default => "Sin permisos especiales",
};
echo $permisos;
?>
Aunque match es muy cómodo, para empezar conviene dominar primero if, else, elseif y switch, porque aparecen en muchísimos ejemplos y proyectos.
24. El operador ternario
El operador ternario permite escribir un if...else sencillo en una sola línea.

Su estructura es:
condicion ? valor_si_verdadero : valor_si_falso;
Ejemplo con if...else normal:
<?php
$edad = 20;
if ($edad >= 18) {
$mensaje = "Mayor de edad";
} else {
$mensaje = "Menor de edad";
}
echo $mensaje;
?>
El mismo ejemplo con operador ternario:
<?php
$edad = 20;
$mensaje = $edad >= 18 ? "Mayor de edad" : "Menor de edad";
echo $mensaje;
?>
Resultado:
Mayor de edad
El ternario es útil para condiciones pequeñas, pero no conviene abusar de él. Si la condición es compleja, un
if...elsenormal suele ser más claro.
Ejemplo práctico:
<?php
$stock = 0;
$mensaje = $stock > 0 ? "Producto disponible" : "Producto agotado";
echo $mensaje;
?>
25. El operador de fusión de null: ??
En PHP también existe el operador ??, llamado operador de fusión de null.
Sirve para usar un valor alternativo cuando una variable no existe o vale null.
Esto será muy útil cuando trabajemos con formularios.
Ejemplo:
<?php
$nombre = $_GET["nombre"] ?? "Invitado";
echo "Hola, $nombre";
?>
Este código intenta leer el parámetro nombre desde la URL.
Por ejemplo:
pagina.php?nombre=Antonio
En ese caso, mostrará:
Hola, Antonio
Pero si no existe nombre en la URL, usará "Invitado".
Sin ??, podríamos tener errores o avisos si intentamos acceder a una variable que no existe.
26. Condicionales con formularios
Uno de los usos más importantes de los condicionales en PHP es validar datos recibidos desde formularios HTML.
Vamos a crear un ejemplo sencillo.
Archivo formulario.html:
<form action="procesar.php" method="post">
<label for="nombre">Nombre:</label>
<input type="text" name="nombre" id="nombre">
<button type="submit">Enviar</button>
</form>
Archivo procesar.php:
<?php
$nombre = $_POST["nombre"] ?? "";
if ($nombre === "") {
echo "Debes escribir tu nombre.";
} else {
echo "Hola, $nombre.";
}
?>
Aquí usamos:
$_POST["nombre"] ?? ""
para recoger el valor enviado desde el formulario.
Después comprobamos si está vacío:
if ($nombre === "")
Si no hay nombre, mostramos un mensaje de error.
Si hay nombre, saludamos al usuario.
27. Validar varios campos de un formulario
Vamos a ampliar el ejemplo anterior con nombre, edad y email.
Formulario:
<form action="procesar.php" method="post">
<label for="nombre">Nombre:</label>
<input type="text" name="nombre" id="nombre">
<br><br>
<label for="edad">Edad:</label>
<input type="number" name="edad" id="edad">
<br><br>
<label for="email">Email:</label>
<input type="email" name="email" id="email">
<br><br>
<button type="submit">Enviar</button>
</form>
Archivo procesar.php:
<?php
$nombre = $_POST["nombre"] ?? "";
$edad = $_POST["edad"] ?? "";
$email = $_POST["email"] ?? "";
if ($nombre === "") {
echo "El nombre es obligatorio.";
} elseif ($edad === "") {
echo "La edad es obligatoria.";
} elseif ($email === "") {
echo "El email es obligatorio.";
} elseif ($edad < 18) {
echo "Debes ser mayor de edad para registrarte.";
} else {
echo "Registro correcto.";
}
?>
Este ejemplo ya se parece mucho más a una validación real.
Primero comprobamos que los campos obligatorios no estén vacíos.
Después comprobamos una regla concreta: que la edad sea mayor o igual que 18.
Finalmente, si todo está bien, mostramos el mensaje de registro correcto.
28. Mejorando la validación de edad
Hay un detalle importante. Los datos que llegan desde un formulario suelen llegar como texto, aunque el input sea de tipo number.
Por eso conviene validar bien.
<?php
$edad = $_POST["edad"] ?? "";
if ($edad === "") {
echo "La edad es obligatoria.";
} elseif (!is_numeric($edad)) {
echo "La edad debe ser un número.";
} elseif ($edad < 0 || $edad > 120) {
echo "La edad no parece válida.";
} elseif ($edad < 18) {
echo "Debes ser mayor de edad.";
} else {
echo "Edad correcta.";
}
?>
Aquí aparece una función nueva:
is_numeric($edad)
Esta función comprueba si un valor es numérico.
El operador ! delante significa “no”.
Por tanto:
!is_numeric($edad)
significa:
Si la edad no es numérica…
Este tipo de validación es esencial. Nunca debemos confiar ciegamente en los datos que llegan desde un formulario.
29. Condicionales y arrays
Aunque los arrays se estudiarán con más detalle más adelante, podemos ver ya un ejemplo sencillo.
Imaginemos que tenemos un array con productos:
<?php
$productos = ["teclado", "ratón", "monitor"];
$productoBuscado = "ratón";
if (in_array($productoBuscado, $productos)) {
echo "El producto está disponible.";
} else {
echo "El producto no está disponible.";
}
?>
La función in_array() comprueba si un valor existe dentro de un array.
En este caso, "ratón" sí está dentro del array, por lo que se muestra:
El producto está disponible.
Ejemplo aplicado a roles:
<?php
$rolesPermitidos = ["admin", "editor"];
$rolUsuario = "cliente";
if (in_array($rolUsuario, $rolesPermitidos)) {
echo "Puedes acceder al panel.";
} else {
echo "No tienes permisos.";
}
?>
Este ejemplo es más flexible que escribir:
$rolUsuario === "admin" || $rolUsuario === "editor"
Cuando hay muchos valores posibles, usar un array puede ser más cómodo.
30. Condicionales con fechas
PHP también puede trabajar con fechas y tomar decisiones según el día actual.
Ejemplo:
<?php
$hora = date("H");
if ($hora < 12) {
echo "Buenos días.";
} elseif ($hora < 20) {
echo "Buenas tardes.";
} else {
echo "Buenas noches.";
}
?>
La función date("H") devuelve la hora actual en formato de 24 horas.
Si la hora es menor que 12, mostramos "Buenos días".
Si no, pero es menor que 20, mostramos "Buenas tardes".
En cualquier otro caso, mostramos "Buenas noches".
Este tipo de condicional puede usarse en una web para personalizar mensajes según la hora.
31. Valores que PHP interpreta como falso
En PHP no solamente false se considera falso.
También hay otros valores que, en una condición, PHP puede interpretar como falsos.
Algunos de los más importantes son:
| Valor | PHP lo interpreta como |
|---|---|
false | falso |
0 | falso |
"0" | falso |
"" | falso |
null | falso |
[] | falso |
Ejemplo:
<?php
$nombre = "";
if ($nombre) {
echo "El nombre tiene contenido.";
} else {
echo "El nombre está vacío.";
}
?>
Como $nombre contiene una cadena vacía, PHP la interpreta como falso.
Resultado:
El nombre está vacío.
Sin embargo, para alumnos que están empezando, muchas veces es más claro escribir condiciones explícitas:
<?php
$nombre = "";
if ($nombre !== "") {
echo "El nombre tiene contenido.";
} else {
echo "El nombre está vacío.";
}
?>
Este segundo ejemplo deja más claro qué estamos comprobando.
32. Ejemplo práctico completo: acceso a una zona privada
Vamos a unir varias ideas en un ejemplo más completo.
Queremos comprobar:
El usuario debe haber iniciado sesión.
La cuenta debe estar activa.
El rol debe ser admin o editor.
<?php
$sesionIniciada = true;
$cuentaActiva = true;
$rol = "editor";
if (!$sesionIniciada) {
echo "Debes iniciar sesión.";
} elseif (!$cuentaActiva) {
echo "Tu cuenta no está activa.";
} elseif ($rol === "admin" || $rol === "editor") {
echo "Puedes acceder a la zona privada.";
} else {
echo "No tienes permisos suficientes.";
}
?>
Este código está escrito de forma ordenada.
Primero comprobamos los errores principales:
Si no hay sesión, no dejamos continuar.
Si la cuenta no está activa, tampoco.
Si todo lo anterior está bien, miramos los permisos.
Finalmente, si no tiene el rol adecuado, denegamos el acceso.
Este patrón es muy habitual en programación web.
33. Ejemplo práctico completo: carrito de compra
Vamos a imaginar que tenemos una tienda online sencilla.
Queremos comprobar si un producto se puede comprar.
<?php
$producto = "Monitor 24 pulgadas";
$precio = 149.99;
$stock = 3;
$usuarioRegistrado = true;
if ($stock <= 0) {
echo "El producto $producto está agotado.";
} elseif (!$usuarioRegistrado) {
echo "Debes iniciar sesión para comprar.";
} else {
echo "Puedes comprar $producto por $precio euros.";
}
?>
Resultado:
Puedes comprar Monitor 24 pulgadas por 149.99 euros.
Ahora cambiamos el stock:
<?php
$producto = "Monitor 24 pulgadas";
$precio = 149.99;
$stock = 0;
$usuarioRegistrado = true;
if ($stock <= 0) {
echo "El producto $producto está agotado.";
} elseif (!$usuarioRegistrado) {
echo "Debes iniciar sesión para comprar.";
} else {
echo "Puedes comprar $producto por $precio euros.";
}
?>
Resultado:
El producto Monitor 24 pulgadas está agotado.
Fíjate en que, si el producto está agotado, ya no tiene sentido comprobar si el usuario está registrado. PHP entra en el primer bloque y termina la estructura condicional.
34. Ejemplo práctico completo: cálculo de descuento
Vamos a crear un pequeño sistema de descuentos.
Si el cliente compra más de 100 euros, tiene un 10% de descuento.
Si compra más de 200 euros, tiene un 20% de descuento.
Si compra 100 euros o menos, no tiene descuento.
<?php
$totalCompra = 250;
if ($totalCompra > 200) {
$descuento = 20;
} elseif ($totalCompra > 100) {
$descuento = 10;
} else {
$descuento = 0;
}
$importeDescuento = $totalCompra * $descuento / 100;
$totalFinal = $totalCompra - $importeDescuento;
echo "Total inicial: $totalCompra euros<br>";
echo "Descuento aplicado: $descuento%<br>";
echo "Importe descontado: $importeDescuento euros<br>";
echo "Total final: $totalFinal euros";
?>
Resultado aproximado:
Total inicial: 250 euros
Descuento aplicado: 20%
Importe descontado: 50 euros
Total final: 200 euros
El orden aquí también importa. Primero comprobamos la condición más alta:
$totalCompra > 200
Si empezáramos por $totalCompra > 100, una compra de 250 euros entraría ahí y solo recibiría un 10% de descuento.
35. Ejemplo práctico completo: reserva de habitación
Imaginemos una aplicación muy sencilla para reservar una habitación.
Queremos comprobar:
Que hay habitaciones disponibles.
Que el cliente ha indicado número de noches.
Que el número de noches es válido.
Que el cliente acepta las condiciones.
<?php
$habitacionesDisponibles = 4;
$noches = 3;
$aceptaCondiciones = true;
$precioPorNoche = 60;
if ($habitacionesDisponibles <= 0) {
echo "No hay habitaciones disponibles.";
} elseif ($noches <= 0) {
echo "Debes indicar un número de noches válido.";
} elseif (!$aceptaCondiciones) {
echo "Debes aceptar las condiciones de la reserva.";
} else {
$precioTotal = $noches * $precioPorNoche;
echo "Reserva realizada correctamente.<br>";
echo "Noches reservadas: $noches<br>";
echo "Precio total: $precioTotal euros";
}
?>
Este ejemplo es interesante porque dentro del else no solo mostramos un mensaje, sino que hacemos un cálculo.
Esto es habitual: primero validamos, después procesamos.
36. Ejemplo práctico completo: panel según rol de usuario
Una web puede mostrar opciones diferentes dependiendo del tipo de usuario.
<?php
$rol = "admin";
if ($rol === "admin") {
echo "<h2>Panel de administración</h2>";
echo "<p>Puedes gestionar usuarios, productos y reservas.</p>";
} elseif ($rol === "editor") {
echo "<h2>Panel de edición</h2>";
echo "<p>Puedes crear y modificar contenidos.</p>";
} elseif ($rol === "cliente") {
echo "<h2>Zona de cliente</h2>";
echo "<p>Puedes consultar tus pedidos y modificar tus datos.</p>";
} else {
echo "<h2>Acceso limitado</h2>";
echo "<p>No se reconoce tu rol de usuario.</p>";
}
?>
Aquí PHP no solo toma una decisión lógica, también genera HTML diferente según el caso.
Este es uno de los motivos por los que PHP se usa tanto en desarrollo web: puede mezclar lógica del servidor con generación dinámica de contenido HTML.
37. Alternar PHP y HTML en condicionales
También podemos escribir condicionales mezclando PHP y HTML de otra forma.
Ejemplo:
<?php
$usuarioRegistrado = true;
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Zona privada</title>
</head>
<body>
<?php if ($usuarioRegistrado): ?>
<h1>Bienvenido a tu cuenta</h1>
<p>Desde aquí puedes gestionar tus datos.</p>
<?php else: ?>
<h1>Acceso no permitido</h1>
<p>Debes iniciar sesión para ver esta página.</p>
<?php endif; ?>
</body>
</html>
Esta sintaxis alternativa es bastante usada en plantillas PHP, porque puede resultar más legible cuando hay mucho HTML.
En lugar de abrir y cerrar llaves {}, usamos:
<?php if (condicion): ?>
HTML
<?php else: ?>
HTML
<?php endif; ?>
No es obligatorio usarla, pero conviene conocerla porque aparece en muchos proyectos PHP y en plantillas de WordPress.
38. Otro ejemplo con HTML: mostrar un aviso de stock
<?php
$producto = "Teclado mecánico";
$stock = 0;
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Producto</title>
</head>
<body>
<h1><?php echo $producto; ?></h1>
<?php if ($stock > 0): ?>
<p>Producto disponible.</p>
<button>Comprar</button>
<?php else: ?>
<p>Producto agotado.</p>
<button disabled>No disponible</button>
<?php endif; ?>
</body>
</html>
Este ejemplo representa una situación muy real. En una tienda online no queremos mostrar el mismo botón si el producto está disponible que si está agotado.
39. Condicionales y seguridad básica
Los condicionales también ayudan a proteger partes de una aplicación.
Por ejemplo, podemos impedir que un usuario no identificado vea una página privada.
<?php
$logueado = false;
if (!$logueado) {
echo "No tienes permiso para acceder a esta página.";
exit;
}
echo "Contenido privado de la aplicación.";
?>
La función exit detiene la ejecución del script.
Esto significa que si el usuario no está logueado, PHP muestra el mensaje y deja de ejecutar el resto del archivo.
Más adelante, cuando trabajemos con sesiones, este tipo de código será muy habitual:
<?php
session_start();
if (!isset($_SESSION["usuario"])) {
echo "Debes iniciar sesión.";
exit;
}
echo "Bienvenido a la zona privada.";
?>
En este ejemplo todavía aparecen elementos que se estudiarán más adelante, como session_start() y $_SESSION, pero la idea principal ya se entiende: usamos un condicional para proteger una parte del programa.
40. isset() y empty()
PHP tiene funciones muy utilizadas para comprobar variables.
La función isset() comprueba si una variable existe y no es null.
Ejemplo:
<?php
if (isset($_POST["nombre"])) {
echo "El campo nombre ha sido enviado.";
} else {
echo "El campo nombre no existe.";
}
?>
La función empty() comprueba si una variable está vacía.
Ejemplo:
<?php
$nombre = "";
if (empty($nombre)) {
echo "El nombre está vacío.";
} else {
echo "El nombre tiene contenido.";
}
?>
Hay que tener cuidado con empty(), porque considera vacíos varios valores, como "", 0, "0", null, false o [].
Ejemplo:
<?php
$stock = 0;
if (empty($stock)) {
echo "No hay stock o el valor está vacío.";
}
?>
Aunque $stock existe y vale 0, empty() lo considera vacío.
Por eso, en algunos casos es mejor hacer comprobaciones explícitas:
<?php
$stock = 0;
if ($stock === 0) {
echo "El producto está agotado.";
}
?>
La idea importante es esta: no basta con saber que una función existe; hay que saber exactamente qué está comprobando.
41. Ejemplo práctico: validar un formulario de login
Formulario login.html:
<form action="login.php" method="post">
<label for="usuario">Usuario:</label>
<input type="text" name="usuario" id="usuario">
<br><br>
<label for="password">Contraseña:</label>
<input type="password" name="password" id="password">
<br><br>
<button type="submit">Entrar</button>
</form>
Archivo login.php:
<?php
$usuario = $_POST["usuario"] ?? "";
$password = $_POST["password"] ?? "";
if ($usuario === "" || $password === "") {
echo "Debes introducir usuario y contraseña.";
} elseif ($usuario === "admin" && $password === "1234") {
echo "Acceso correcto.";
} else {
echo "Usuario o contraseña incorrectos.";
}
?>
Este ejemplo todavía no usa base de datos, pero la lógica principal ya está ahí:
Primero comprobamos si faltan datos.
Después comprobamos si los datos son correctos.
Si no son correctos, mostramos un error.
Más adelante cambiaremos la comparación directa por una consulta a la base de datos.
42. Ejemplo práctico: validar un registro de usuario
Vamos a crear una validación algo más extensa.
<?php
$nombre = $_POST["nombre"] ?? "";
$email = $_POST["email"] ?? "";
$password = $_POST["password"] ?? "";
$repetirPassword = $_POST["repetir_password"] ?? "";
$aceptaCondiciones = isset($_POST["condiciones"]);
if ($nombre === "") {
echo "El nombre es obligatorio.";
} elseif ($email === "") {
echo "El email es obligatorio.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "El email no tiene un formato válido.";
} elseif ($password === "") {
echo "La contraseña es obligatoria.";
} elseif (strlen($password) < 6) {
echo "La contraseña debe tener al menos 6 caracteres.";
} elseif ($password !== $repetirPassword) {
echo "Las contraseñas no coinciden.";
} elseif (!$aceptaCondiciones) {
echo "Debes aceptar las condiciones.";
} else {
echo "Registro completado correctamente.";
}
?>
Aquí aparecen dos funciones útiles:
filter_var($email, FILTER_VALIDATE_EMAIL)
Sirve para comprobar si un email tiene un formato válido.
strlen($password)
Devuelve la longitud de una cadena de texto.
Este ejemplo es muy representativo de cómo se trabaja en aplicaciones web: recogemos datos, comprobamos condiciones y, si todo es correcto, continuamos.
43. Ejemplo práctico: mostrar errores acumulados
En el ejemplo anterior solo mostramos el primer error encontrado. Eso está bien para empezar, pero en una aplicación real puede interesarnos mostrar todos los errores a la vez.
Para eso podemos usar un array de errores.
<?php
$nombre = $_POST["nombre"] ?? "";
$email = $_POST["email"] ?? "";
$password = $_POST["password"] ?? "";
$errores = [];
if ($nombre === "") {
$errores[] = "El nombre es obligatorio.";
}
if ($email === "") {
$errores[] = "El email es obligatorio.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errores[] = "El email no tiene un formato válido.";
}
if ($password === "") {
$errores[] = "La contraseña es obligatoria.";
} elseif (strlen($password) < 6) {
$errores[] = "La contraseña debe tener al menos 6 caracteres.";
}
if (count($errores) > 0) {
echo "<h2>Se han encontrado errores:</h2>";
foreach ($errores as $error) {
echo "<p>$error</p>";
}
} else {
echo "Registro correcto.";
}
?>
Este ejemplo es más avanzado, pero merece la pena verlo porque representa una forma más realista de validar formularios.
En lugar de parar en el primer error, vamos guardando todos los problemas encontrados en el array $errores.
Al final, comprobamos cuántos errores hay:
count($errores) > 0
Si hay errores, los mostramos.
Si no hay errores, continuamos.
44. Ejemplo práctico: semáforo
Vamos a practicar con un ejemplo muy visual.
<?php
$color = "rojo";
if ($color === "verde") {
echo "Puedes pasar.";
} elseif ($color === "amarillo") {
echo "Precaución, prepárate para detenerte.";
} elseif ($color === "rojo") {
echo "Debes detenerte.";
} else {
echo "Color no reconocido.";
}
?>
También podríamos hacerlo con match:
<?php
$color = "rojo";
$mensaje = match ($color) {
"verde" => "Puedes pasar.",
"amarillo" => "Precaución, prepárate para detenerte.",
"rojo" => "Debes detenerte.",
default => "Color no reconocido.",
};
echo $mensaje;
?>
Este ejemplo es sencillo, pero ayuda a entender cómo una variable puede dirigir el comportamiento del programa.
45. Ejemplo práctico: cajero automático
Vamos a simular una operación de retirada de dinero.
<?php
$saldo = 500;
$cantidadRetirar = 700;
if ($cantidadRetirar <= 0) {
echo "La cantidad debe ser mayor que cero.";
} elseif ($cantidadRetirar > $saldo) {
echo "No tienes saldo suficiente.";
} else {
$saldo = $saldo - $cantidadRetirar;
echo "Operación realizada correctamente.<br>";
echo "Nuevo saldo: $saldo euros.";
}
?>
En este ejemplo hay una validación clara:
No se puede retirar una cantidad negativa o cero.
No se puede retirar más dinero del saldo disponible.
Si todo es correcto, se realiza la operación.
Este patrón de validación aparece constantemente en programación.
46. Ejemplo práctico: cálculo de envío
Vamos a simular una tienda online.
Queremos que el envío sea gratis si la compra supera los 50 euros.
<?php
$totalCompra = 42;
$costeEnvio = 4.99;
if ($totalCompra >= 50) {
$costeEnvio = 0;
}
$totalFinal = $totalCompra + $costeEnvio;
echo "Compra: $totalCompra euros<br>";
echo "Envío: $costeEnvio euros<br>";
echo "Total: $totalFinal euros";
?>
Si $totalCompra vale 42, el envío se mantiene en 4.99.
Si cambiamos la compra:
<?php
$totalCompra = 75;
$costeEnvio = 4.99;
if ($totalCompra >= 50) {
$costeEnvio = 0;
}
$totalFinal = $totalCompra + $costeEnvio;
echo "Compra: $totalCompra euros<br>";
echo "Envío: $costeEnvio euros<br>";
echo "Total: $totalFinal euros";
?>
Ahora el envío será gratuito.
47. Ejemplo práctico: control de temperatura
<?php
$temperatura = 31;
if ($temperatura < 0) {
echo "Hace mucho frío.";
} elseif ($temperatura <= 15) {
echo "Hace frío.";
} elseif ($temperatura <= 25) {
echo "Temperatura agradable.";
} elseif ($temperatura <= 35) {
echo "Hace calor.";
} else {
echo "Hace mucho calor.";
}
?>
Este ejemplo sirve para practicar rangos.
Cuando trabajamos con rangos, hay que prestar mucha atención a los límites.
Por ejemplo:
$temperatura <= 15
incluye el valor 15.
Mientras que:
$temperatura < 15
no lo incluiría.
48. Ejemplo práctico: recomendador sencillo
Podemos usar condicionales para crear un recomendador muy simple.
<?php
$presupuesto = 800;
$uso = "programacion";
if ($presupuesto < 500) {
echo "Te recomendamos un equipo básico para tareas de oficina y navegación.";
} elseif ($presupuesto <= 1000 && $uso === "programacion") {
echo "Te recomendamos un portátil con buen procesador y al menos 16 GB de RAM.";
} elseif ($presupuesto <= 1000 && $uso === "videojuegos") {
echo "Te recomendamos buscar un equipo con tarjeta gráfica dedicada.";
} elseif ($presupuesto > 1000 && $uso === "programacion") {
echo "Puedes optar por un equipo potente para desarrollo, máquinas virtuales y Docker.";
} else {
echo "Necesitamos más información para hacer una recomendación.";
}
?>
Este ejemplo combina comparación numérica y comparación de cadenas.
49. Errores comunes al trabajar con condicionales
Uno de los errores más habituales es usar = en vez de == o ===.
Esto está mal:
<?php
$usuario = "cliente";
if ($usuario = "admin") {
echo "Eres administrador.";
}
?>
El operador = no compara. El operador = asigna.
Es decir, en vez de comprobar si $usuario es "admin", estamos cambiando el valor de $usuario.
La comparación correcta sería:
<?php
$usuario = "cliente";
if ($usuario === "admin") {
echo "Eres administrador.";
} else {
echo "No eres administrador.";
}
?>
Otro error habitual es olvidar las llaves:
<?php
$edad = 20;
if ($edad >= 18)
echo "Eres mayor de edad.";
echo "Puedes acceder.";
?>
Aunque visualmente pueda parecer que las dos líneas dependen del if, realmente solo la primera instrucción depende de la condición.
Por eso es mejor usar siempre llaves:
<?php
$edad = 20;
if ($edad >= 18) {
echo "Eres mayor de edad.";
echo "Puedes acceder.";
}
?>
Esto evita errores y mejora la lectura.
50. Buenas prácticas con condicionales
Aunque los condicionales son sencillos de entender, conviene usarlos con orden.
Es recomendable escribir condiciones claras y fáciles de leer. Si una condición se vuelve demasiado larga, podemos guardarla en una variable.
Por ejemplo:
<?php
$edad = 22;
$tieneEntrada = true;
$estaVetado = false;
$puedeEntrar = $edad >= 18 && $tieneEntrada && !$estaVetado;
if ($puedeEntrar) {
echo "Puedes entrar.";
} else {
echo "No puedes entrar.";
}
?>
La variable $puedeEntrar hace que el if sea mucho más legible.
También conviene validar primero los casos de error. Esto evita estructuras demasiado anidadas.
En lugar de escribir un código muy profundo, como este:
<?php
if ($usuario !== "") {
if ($password !== "") {
if (strlen($password) >= 6) {
echo "Datos correctos.";
} else {
echo "La contraseña es demasiado corta.";
}
} else {
echo "La contraseña es obligatoria.";
}
} else {
echo "El usuario es obligatorio.";
}
?>
Podemos escribirlo así:
<?php
if ($usuario === "") {
echo "El usuario es obligatorio.";
} elseif ($password === "") {
echo "La contraseña es obligatoria.";
} elseif (strlen($password) < 6) {
echo "La contraseña es demasiado corta.";
} else {
echo "Datos correctos.";
}
?>
Este segundo código es más limpio y más fácil de mantener.
Práctica guiada: sistema de acceso a una plataforma
Vamos a crear una pequeña práctica usando condicionales.
Queremos simular el acceso a una plataforma de alumnos.
Cada alumno tendrá:
- Nombre.
- Edad.
- Usuario.
- Contraseña.
- Estado de matrícula.
- Rol.
El programa deberá comprobar si puede acceder.
<?php
$nombre = "Laura";
$edad = 19;
$usuario = "laura";
$password = "abc123";
$matriculaActiva = true;
$rol = "alumno";
if ($usuario === "" || $password === "") {
echo "Debes introducir usuario y contraseña.";
} elseif ($usuario !== "laura" || $password !== "abc123") {
echo "Usuario o contraseña incorrectos.";
} elseif ($edad < 18) {
echo "Debes ser mayor de edad para acceder a esta plataforma.";
} elseif (!$matriculaActiva) {
echo "Tu matrícula no está activa.";
} elseif ($rol === "alumno") {
echo "Bienvenida, $nombre. Has accedido como alumna.";
} elseif ($rol === "profesor") {
echo "Bienvenida, $nombre. Has accedido como profesora.";
} elseif ($rol === "admin") {
echo "Bienvenida, $nombre. Has accedido como administradora.";
} else {
echo "Rol no reconocido.";
}
?>
Este ejercicio resume muchas de las ideas del tema:
- Comprobación de campos vacíos.
- Comparación de usuario y contraseña.
- Validación de edad.
- Uso de variables booleanas.
- Comprobación de roles.
- Uso ordenado de
if,elseifyelse.
Práctica guiada: calculadora de precio de reserva
Vamos a crear otro ejemplo completo relacionado con reservas.
El sistema debe calcular el precio final de una reserva teniendo en cuenta:
- Número de noches.
- Precio por noche.
- Temporada.
- Descuento si reserva más de 7 noches.
- Validaciones básicas.
<?php
$noches = 8;
$precioPorNoche = 70;
$temporada = "alta";
if ($noches <= 0) {
echo "El número de noches no es válido.";
} elseif ($precioPorNoche <= 0) {
echo "El precio por noche no es válido.";
} else {
$precioBase = $noches * $precioPorNoche;
if ($temporada === "alta") {
$suplemento = $precioBase * 0.20;
} elseif ($temporada === "media") {
$suplemento = $precioBase * 0.10;
} elseif ($temporada === "baja") {
$suplemento = 0;
} else {
$suplemento = 0;
echo "Temporada no reconocida. Se aplicará precio base.<br>";
}
if ($noches > 7) {
$descuento = $precioBase * 0.15;
} else {
$descuento = 0;
}
$precioFinal = $precioBase + $suplemento - $descuento;
echo "Noches: $noches<br>";
echo "Precio por noche: $precioPorNoche euros<br>";
echo "Precio base: $precioBase euros<br>";
echo "Suplemento: $suplemento euros<br>";
echo "Descuento: $descuento euros<br>";
echo "Precio final: $precioFinal euros";
}
?>
Este ejemplo es bastante completo porque combina validación, cálculos y decisiones.
Ejercicios propuestos
Ejercicio 1: mayoría de edad
Crea un script PHP que guarde una edad en una variable y muestre si la persona es menor o mayor de edad.
Después modifica el programa para que también indique si la edad no es válida cuando sea menor que 0.
Ejercicio 2: nota de un alumno
Crea un programa que reciba una nota y muestre:
Suspenso si es menor que 5.Aprobado si está entre 5 y 6.99.Notable si está entre 7 y 8.99.Sobresaliente si está entre 9 y 10.Nota no válida si está fuera del rango de 0 a 10.
Ejercicio 3: login sencillo
Crea dos variables:
$usuario = "admin";
$password = "1234";
Después crea un condicional que compruebe si el usuario y la contraseña son correctos.
Si son correctos, debe mostrar:
Acceso permitido
Si no, debe mostrar:
Acceso denegado
Ejercicio 4: tienda online
Crea un programa con estas variables:
$producto = "Ratón inalámbrico";
$precio = 25;
$stock = 10;
$usuarioRegistrado = true;
El programa debe comprobar si el producto tiene stock y si el usuario está registrado.
Si todo es correcto, debe mostrar que el producto se puede comprar.
Si no hay stock, debe indicar que el producto está agotado.
Si el usuario no está registrado, debe indicar que debe iniciar sesión.
Ejercicio 5: roles de usuario
Crea una variable $rol con uno de estos valores:
"admin"
"editor"
"cliente"
"invitado"
Usa condicionales para mostrar un mensaje diferente según el rol.
Después repite el ejercicio usando switch.
Ejercicio 6: formulario de contacto
Crea un formulario HTML con los campos:
Nombre.
Email.
Mensaje.
Después crea un archivo PHP que valide:
Que el nombre no esté vacío.
Que el email no esté vacío.
Que el email tenga formato válido.
Que el mensaje tenga al menos 10 caracteres.
Si todo es correcto, debe mostrar:
Formulario enviado correctamente
Resumen del tema
- Los condicionales permiten que un programa tome decisiones.
- La estructura más básica es
if. - Cuando queremos ejecutar una alternativa usamos
else. - Cuando tenemos varias posibilidades usamos
elseif. - Para comparar una variable con muchos valores posibles podemos usar
switchomatch. - Los operadores de comparación permiten comprobar igualdad, diferencia, mayor que, menor que, etc.
- Los operadores lógicos permiten combinar condiciones usando
&&,||y!. - En PHP es importante diferenciar entre
==y===. - Los condicionales son fundamentales para validar formularios, controlar accesos, calcular descuentos, mostrar contenido según el usuario y proteger zonas privadas.
- A partir de este punto, PHP deja de ser una simple secuencia de instrucciones y empieza a comportarse como un programa capaz de reaccionar ante distintas situaciones.







