PHP if else para lógica condicional y ramificación

PHP if else evalúa una expresión booleana y ejecuta uno de dos o más bloques de código según el resultado. Usa elseif para encadenar condiciones adicionales cuando los resultados son mutuamente excluyentes y dependen del orden. Solo se ejecuta la primera rama que coincide, así que coloca primero la condición más restrictiva. Por eso, if/elseif/else es la estructura de control predeterminada para cualquier lógica de ramificación que dependa de comprobaciones por rango, expresiones compuestas o tipos mixtos.

Ejemplo de if else en PHP para ramificación condicional

Salida:

La salida aparecerá aquí...

Salida:

Nota: B

Cómo funciona este ejemplo

  1. $puntaje contiene el valor entero 82.
  2. La condición if $puntaje >= 90 se evalúa como false, así que PHP omite ese bloque.
  3. La condición elseif $puntaje >= 80 se evalúa como true, así que PHP ejecuta el segundo bloque e imprime Nota: B.
  4. El bloque else nunca se ejecuta porque una rama anterior ya coincidió. PHP deja de evaluar la cadena después de la primera condición verdadera.

¿Qué es elseif en PHP?

PHP elseif agrega una nueva condición a un bloque if existente. PHP evalúa cada elseif en orden y ejecuta el primero que sea true, luego omite el resto de la cadena. Puedes apilar tantas ramas elseif como necesites, aunque más de tres o cuatro suele indicar que match o un arreglo de consulta sería más limpio. En la sintaxis con llaves, else if (dos palabras) y elseif (una palabra) se comportan igual, pero en la sintaxis alternativa (if: ... endif;) solo elseif de una sola palabra es válido.

Errores comunes con if else en PHP

Usar = en lugar de == o === en condiciones

Incorrecto:

if ($rol = "administrador") { // asigna "administrador" a $rol, siempre verdadero
    echo "Acceso concedido";
}

Correcto:

if ($rol === "administrador") {
    echo "Acceso concedido";
}

La asignación dentro de if cambia la variable y devuelve el valor asignado, lo que puede hacer que la rama se ejecute sin condición.

Confiar en la indentación en lugar de llaves (else colgante)

Incorrecto:

if ($esAdmin)
    if ($estaActivo)
        echo "ok";
    else
        echo "no es admin"; // se asocia al if interno

Correcto:

if (!$esAdmin) {
    echo "no es admin";
} elseif ($estaActivo) {
    echo "ok";
}

Sin llaves, else se enlaza con el if no emparejado más cercano. Usa llaves o reestructura la lógica en una sola cadena if/elseif/else.

if/elseif en PHP vs switch vs match

Característicaif/elseifswitchmatch (PHP 8+)
Tipo de comparaciónCualquier expresiónLaxa (==)Estricta (===)
Devuelve un valorNoNo
Fall-throughN/ASí, salvo breakNo
Mejor paraComprobaciones por rango, condiciones compuestasMuchos valores discretos con lógica compartidaMapeo estricto de valores a un resultado

Usa if/elseif cuando las condiciones incluyan rangos, lógica compuesta o llamadas a funciones. Cambia a match cuando mapees valores discretos a resultados con comparación estricta. Usa switch cuando necesites fall-through o bloques de sentencias por caso.

Más ejemplos

Cláusula de guarda para reducir anidación:

function procesar($entrada) {
    if (!is_string($entrada)) {
        return "tipo inválido";
    }
    if ($entrada === "") {
        return "cadena vacía";
    }
    return strtoupper($entrada);
}

Los retornos tempranos reemplazan árboles if/else anidados y mantienen la lógica principal en el nivel superior de indentación.

Atajo ternario para asignaciones simples de dos ramas:

$etiqueta = ($cantidad > 0) ? "tiene elementos" : "vacío";

Cuando la rama produce un único valor, el operador ternario ? : reemplaza un bloque if/else completo en una sola expresión.

Preguntas frecuentes

¿Cuál es la diferencia entre elseif y else if en PHP?

En la sintaxis con llaves ({ }), ambos son equivalentes: PHP trata else if como un else seguido de un if anidado. En la sintaxis alternativa (if: ... endif;), solo compila elseif de una sola palabra. Usa elseif en todo el código para evitar errores de sintaxis al refactorizar entre estilos.

¿Las condiciones en PHP deben usar == o ===?

== realiza coerción de tipos: 0 == "foo" es true en PHP 7 (cambió a false en PHP 8 para cadenas no numéricas). === compara valor y tipo sin coerción. Prefiere === para resultados predecibles, sobre todo con entrada de usuario o datos de tipos mixtos.

¿Se pueden tener varias ramas elseif en PHP?

Sí. PHP permite ramas elseif ilimitadas en una sola cadena. Cada condición se comprueba en orden y solo se ejecuta la primera rama verdadera. Si ninguna coincide y existe else, actúa como valor predeterminado. Cuando la lista supera cuatro o cinco ramas, match o un arreglo de consulta resulta más legible.