W3docs

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 5

Como $myNumber == 4 es falso pero $myNumber == 5 es verdadero, se ejecuta el segundo bloque y nunca se llega al else.

"Pruébalo tú mismo" no está disponible para este ejemplo.

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: B

Una 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: two

La 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 content

Esto 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 >= 70 primero etiquetaría como "C" cualquier puntuación aprobada.
  • elseif necesita un if previo. No puede usarse de forma independiente — siempre pertenece a una cadena if existente.

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 que elseif extiende
  • else — la rama de respaldo general
  • endif — cierra la forma de sintaxis con dos puntos
  • switch — bifurcación múltiple sobre un valor

Práctica

Práctica
¿Qué es correcto sobre la sentencia 'elseif' en PHP?
¿Qué es correcto sobre la sentencia 'elseif' en PHP?
Was this page helpful?