elseif
La palabra clave "elseif" es una estructura de control en PHP que se usa junto con "if" para ejecutar un bloque de código cuando la condición "if" es falsa
La palabra clave elseif en PHP
elseif es una estructura de control en PHP que añade una condición adicional a una sentencia if. Su bloque se ejecuta únicamente cuando todas las condiciones anteriores son falsas y su propia condición es verdadera. Puedes encadenar tantas cláusulas elseif como necesites, terminando opcionalmente con un else que captura todo lo demás.
Esta página cubre la sintaxis, cómo se evalúan las condiciones en orden, la sintaxis alternativa con dos puntos, la distinción entre elseif y else if (un error fácil de cometer) y los errores más comunes.
Sintaxis
<?php
if (condition1) {
// runs if condition1 is true
} elseif (condition2) {
// runs if condition1 is false AND condition2 is true
} elseif (condition3) {
// runs if condition1 and condition2 are false AND condition3 is true
} else {
// runs if none of the above conditions are true
}PHP evalúa las condiciones de arriba a abajo y se detiene en la primera que sea verdadera — ese bloque se ejecuta y el resto de la cadena (incluido else) se omite. El else final es opcional; sin él, no ocurre nada cuando todas las condiciones son falsas.
Un ejemplo básico
<?php
$myNumber = 5;
if ($myNumber == 4) {
echo "Number is 4";
} elseif ($myNumber == 5) {
echo "Number is 5";
} else {
echo "Number is not 4 or 5";
}
// Output: Number is 5Como $myNumber == 4 es falso pero $myNumber == 5 es verdadero, se ejecuta el segundo bloque y nunca se llega al else.
Encadenando múltiples condiciones
elseif resulta muy útil cuando necesitas asignar un valor a varios rangos mutuamente excluyentes. La primera rama que coincida gana, por lo que debes ordenar tus condiciones de más a menos específica:
<?php
$score = 82;
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} elseif ($score >= 70) {
$grade = "C";
} else {
$grade = "F";
}
echo "Grade: {$grade}";
// Output: Grade: BUna puntuación de 82 no supera la primera prueba (>= 90) pero sí la segunda (>= 80), por lo que $grade pasa a ser "B" y las ramas restantes se omiten.
elseif vs else if
PHP acepta tanto elseif (una palabra) como else if (dos palabras) — se comportan de manera idéntica cuando se usan llaves:
<?php
$x = 2;
if ($x === 1) {
echo "one";
} else if ($x === 2) { // same as elseif
echo "two";
}
// Output: twoLa excepción es la sintaxis alternativa con dos puntos (ver más abajo): en ese caso debes escribir elseif como una sola palabra. else if provoca un error de sintaxis dentro de un bloque if: ... endif;. Para evitar sorpresas, muchas guías de estilo recomiendan usar siempre el elseif de una sola palabra.
Sintaxis alternativa (con dos puntos)
Cuando se mezcla PHP con HTML en plantillas, la sintaxis con dos puntos suele ser más legible que las llaves. Utiliza endif; para cerrar el bloque:
<?php
$role = "editor";
if ($role === "admin"):
echo "Full access";
elseif ($role === "editor"):
echo "Can edit content";
else:
echo "Read only";
endif;
// Output: Can edit contentEsto encaja de manera natural con la palabra clave endif en plantillas HTML. Puedes leer más en el resumen de if / else / elseif.
Errores comunes
=vs==. Dentro de una condición,=asigna en lugar de comparar. Usa==para comparación laxa o===para comparación estricta (con tipo).- El orden importa. Dado que gana la primera rama verdadera, una condición amplia colocada al principio puede ocultar las más específicas que le siguen. En el ejemplo de calificaciones, poner
$score >= 70primero etiquetaría como"C"cualquier puntuación aprobada. elseifnecesita unifprevio. No puede usarse de forma independiente — siempre pertenece a una cadenaifexistente.
Cuándo usar elseif vs switch
Usa elseif para rangos, condiciones combinadas o pruebas sobre distintas variables. Cuando estás comparando un único valor con muchas opciones fijas, una sentencia switch suele ser más clara.
Véase también
if— la sentencia queelseifextiendeelse— la rama de respaldo generalendif— cierra la forma de sintaxis con dos puntosswitch— bifurcación múltiple sobre un valor