if
La palabra clave "if" en PHP ejecuta código condicionalmente. Aprende la sintaxis, los valores verdaderos/falsos, else, elseif y el operador ternario.
La sentencia if en PHP
La sentencia if es la manera en que un programa PHP toma decisiones. Ejecuta un bloque de código solo cuando una condición es verdadera, y lo omite en caso contrario. Sin ella, un script ejecutaría cada línea de arriba a abajo sin posibilidad de ramificarse — if es la base de toda la lógica condicional en PHP.
Esta guía cubre la sintaxis, cómo PHP decide si una condición es "verdadera", la familia else/elseif, la sintaxis alternativa endif para plantillas, atajos como el operador ternario y el de fusión de null, y los errores que cometen los principiantes.
Sintaxis básica
if (condition) {
// code that runs only when condition is true
}La condition es cualquier expresión que PHP pueda evaluar como verdadera o falsa. Si es verdadera, el código dentro de las llaves se ejecuta; si es falsa, PHP omite el bloque y continúa después de él.
<?php
$age = 20;
if ($age >= 18) {
echo "You are an adult.";
}
// Output: You are an adult.Las llaves son opcionales cuando el cuerpo es una sola sentencia, pero úsalas siempre — omitir las llaves es una fuente común de errores, porque solo la primera sentencia se trata como el cuerpo:
if ($age >= 18)
echo "Adult"; // runs conditionally
echo " — welcome"; // ⚠️ runs ALWAYS, it is not part of the ifCómo PHP evalúa las condiciones (verdadero y falso)
Una condición no tiene que ser un true/false literal — PHP convierte cualquier valor a boolean. Estos valores son falsos (se tratan como false):
false0y0.0""(cadena vacía) y"0"null- un array vacío
[]
Cualquier otro valor es verdadero. Esto permite escribir comprobaciones compactas:
<?php
$name = "";
if ($name) {
echo "Hello, $name";
} else {
echo "No name provided."; // empty string is falsy
}
// Output: No name provided.Para construir condiciones generalmente se usan operadores de comparación y lógicos. Consulta PHP Operators para la lista completa.
<?php
$temp = 30;
if ($temp > 25 && $temp < 35) { // logical AND
echo "Warm but comfortable.";
}
// Output: Warm but comfortable.Añadir else y elseif
if por sí solo maneja una ruta. Para proporcionar una alternativa, añade un else; para probar varias condiciones en orden, encadena elseif:
<?php
$score = 72;
if ($score >= 90) {
echo "Grade: A";
} elseif ($score >= 70) {
echo "Grade: B";
} elseif ($score >= 50) {
echo "Grade: C";
} else {
echo "Grade: F";
}
// Output: Grade: BPHP comprueba cada condición de arriba a abajo y ejecuta el primer bloque cuya condición sea verdadera, luego se detiene. Como $score es 72, la prueba >= 90 falla, >= 70 tiene éxito y el resto se omite.
Para capítulos dedicados a estos temas, consulta PHP else, PHP elseif y el recorrido combinado if...elseif...else. Cuando tienes muchos valores fijos para comparar con una variable, una sentencia switch suele ser más clara.
Anidar sentencias if
Puedes colocar un if dentro de otro para probar una segunda condición solo cuando la primera se haya cumplido:
<?php
$loggedIn = true;
$role = "admin";
if ($loggedIn) {
if ($role === "admin") {
echo "Welcome to the admin panel.";
} else {
echo "Welcome back.";
}
}
// Output: Welcome to the admin panel.El anidamiento profundo perjudica la legibilidad — si te encuentras a tres niveles de profundidad, considera combinar condiciones con && o retornar antes.
Sintaxis alternativa (if: / endif)
Al mezclar PHP con HTML en plantillas, la forma con dos puntos y endif es más fácil de leer que las llaves dispersas:
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please log in.</p>
<?php endif; ?>Esto se comporta exactamente igual que la versión con llaves; es puramente una cuestión de estilo para los archivos de vista.
Atajos: ternario y fusión de null
Para asignaciones simples de "uno u otro", el operador ternario condensa un if/else en una sola línea:
<?php
$age = 16;
$status = ($age >= 18) ? "adult" : "minor";
echo $status;
// Output: minorCuando solo te importa si un valor existe (y no es null), el operador de fusión de null ?? es más limpio que un if (isset(...)):
<?php
$config = [];
$timeout = $config["timeout"] ?? 30; // use 30 if the key is missing
echo $timeout;
// Output: 30Ejemplos prácticos
<?php
// Example 1
$num = 10;
if ($num > 5) {
echo "The number is greater than 5." . PHP_EOL;
}
// Output: The number is greater than 5.
// Example 2
$color = "red";
if ($color == "blue") {
echo "The color is blue.";
} else {
echo "The color is not blue.";
}
// Output: The color is not blue.Errores comunes
=en lugar de==.if ($x = 5)asigna 5 a$xy siempre es verdadero. Usa==(comparación flexible) o===(estricta, sin conversión de tipos) para comparar.==vs===. Con==,0 == "hello"y"1" == 1pueden sorprenderte porque PHP convierte tipos. Prefiere===cuando los tipos deben coincidir.- Llaves faltantes alrededor de un cuerpo multilínea — solo la primera sentencia es condicional.
- Confundir valores verdaderos.
if ($value)es falso para0,""y[]; usaisset()o=== nullcuando específicamente quieres decir "¿existe esto?".
Conclusión
La sentencia if permite que un programa PHP elija qué hacer en tiempo de ejecución. Domina las reglas de verdadero/falso, usa elseif/else para manejar múltiples rutas, utiliza la sintaxis alternativa endif en plantillas y apóyate en los operadores ternario y ?? para asignaciones concisas. Desde aquí, explora los bucles PHP para repetir acciones y la sentencia switch para la ramificación basada en valores.