Condicionales en PHP
Los condicionales permiten que el programa tome decisiones: ejecutar un bloque de código solo si se cumple cierta condición. Son la base de cualquier lógica de programación.
if — la decisión básica
La estructura if evalúa una condición. Si es verdadera, ejecuta el bloque
de código entre llaves. Si es falsa, lo saltea directamente.
$edad = 20;
if ($edad >= 18) {
echo "Sos mayor de edad";
}
// Si la condición es falsa, no pasa nada
$temperatura = 10;
if ($temperatura > 30) {
echo "Hace mucho calor"; // esto no se ejecuta
}
echo "Esta línea siempre se ejecuta";
Técnicamente PHP permite omitir las llaves si el bloque tiene una sola línea, pero es una práctica que genera errores difíciles de encontrar. Siempre usá llaves — el código es más claro y más seguro.
if / else
Con else definís qué pasa cuando la condición es falsa.
Siempre se ejecuta uno de los dos bloques, nunca los dos.
$hora = 14;
if ($hora < 12) {
echo "Buenos días";
} else {
echo "Buenas tardes";
}
// Otro ejemplo: verificar si un número es par o impar
$numero = 7;
if ($numero % 2 === 0) {
echo "$numero es par";
} else {
echo "$numero es impar";
}
if / elseif / else
Cuando hay más de dos posibilidades usás elseif.
PHP evalúa cada condición de arriba hacia abajo y ejecuta el primer bloque
cuya condición sea verdadera. Los demás se saltan aunque también sean verdaderos.
$nota = 75;
if ($nota >= 90) {
echo "Sobresaliente";
} elseif ($nota >= 80) {
echo "Notable";
} elseif ($nota >= 70) {
echo "Bien";
} elseif ($nota >= 60) {
echo "Aprobado";
} else {
echo "Desaprobado";
}
Si pusieras $nota >= 60 primero, una nota de 95 caería ahí y nunca llegaría a "Sobresaliente". Siempre ponés los casos más específicos (o más restrictivos) primero.
Operadores de comparación
Son los operadores que usás dentro de las condiciones:
| Operador | Significado | Ejemplo | Resultado |
|---|---|---|---|
== | Igual (valor) | 5 == "5" | true |
=== | Idéntico (valor y tipo) | 5 === "5" | false |
!= | Distinto (valor) | 5 != 3 | true |
!== | No idéntico | 5 !== "5" | true |
> | Mayor que | 7 > 5 | true |
< | Menor que | 3 < 5 | true |
>= | Mayor o igual | 5 >= 5 | true |
<= | Menor o igual | 3 <= 5 | true |
== compara solo el valor y hace conversión de tipos: 0 == false es true, "1" == 1 es true. Esto puede dar resultados inesperados. === compara valor Y tipo, sin conversiones. En general, preferí siempre === para evitar sorpresas.
Operadores lógicos
Permiten combinar varias condiciones en una sola:
$edad = 25;
$tiene_dni = true;
// AND (&&) — ambas condiciones deben ser true
if ($edad >= 18 && $tiene_dni) {
echo "Puede votar";
}
// OR (||) — al menos una condición debe ser true
$dia = "sábado";
if ($dia === "sábado" || $dia === "domingo") {
echo "Es fin de semana";
}
// NOT (!) — invierte la condición
$logueado = false;
if (!$logueado) {
echo "Por favor iniciá sesión";
}
PHP acepta tanto && como and, y tanto || como or. Pero tienen distinta precedencia — && y || tienen mayor prioridad. Para evitar confusión, usá siempre && y ||.
switch — múltiples casos exactos
switch es útil cuando tenés una variable y querés comparar su valor
contra muchas opciones exactas. Es más legible que una cadena larga de elseif
cuando todos los casos comparan la misma variable.
$dia = "lunes";
switch ($dia) {
case "lunes":
case "martes":
case "miércoles":
case "jueves":
case "viernes":
echo "Día de semana";
break;
case "sábado":
case "domingo":
echo "Fin de semana";
break;
default:
echo "Día inválido";
}
Sin break, PHP continúa ejecutando el siguiente case aunque no coincida — ese comportamiento se llama "fall-through". A veces se usa intencionalmente (como en el ejemplo de días de semana), pero si lo olvidás sin querer genera bugs difíciles de encontrar.
match — la alternativa moderna (PHP 8+)
match es como un switch pero más seguro: usa comparación estricta
(===), no tiene fall-through y siempre devuelve un valor:
$estado = "pendiente";
$mensaje = match($estado) {
"pendiente" => "Tu orden está siendo procesada",
"enviado" => "Tu orden está en camino",
"entregado" => "Tu orden fue entregada",
"cancelado" => "Tu orden fue cancelada",
default => "Estado desconocido",
};
echo $mensaje;
Probá el Ejemplo 4: switch y match
Operador ternario
Una forma compacta de escribir un if/else simple en una sola línea. Ideal para asignar un valor según una condición:
// Forma completa: if/else
if ($edad >= 18) {
$estado = "mayor";
} else {
$estado = "menor";
}
// Ternario: condición ? valor_si_true : valor_si_false
$estado = $edad >= 18 ? "mayor" : "menor";
// Otro ejemplo
$precio = 100;
$descuento = $edad < 25 ? 0.20 : 0.10;
echo "Descuento: " . ($descuento * 100) . "%";
?? es un caso especial muy útil en PHP: devuelve el valor de la izquierda si existe y no es null, o el de la derecha si no. $nombre = $_GET["nombre"] ?? "invitado" — si no viene el parámetro, usa "invitado".
Buenas Prácticas
- Usá === en vez de == — evita conversiones de tipo implícitas que pueden dar resultados inesperados
- No anides demasiados if — más de 3 niveles de anidamiento hace el código muy difícil de leer; considerá refactorizar con funciones
- Retorno temprano — en funciones, si una condición hace que no tenga sentido continuar, devolvé o salí antes: menos anidamiento, más claro
- match en vez de switch — en PHP 8+ preferí
match: es más seguro y más conciso - ?? para valores por defecto — es la forma idiomática de manejar variables que pueden no existir