W3docs

else

La palabra clave "else" es una estructura de control en PHP que se usa junto con "if" para ejecutar un bloque de código cuando la condición es falsa.

La palabra clave else en PHP

else es el complemento de la sentencia if en PHP. Por sí sola, if solo decide si ejecutar un bloque de código; combinándola con else puedes proporcionar una alternativa que se ejecuta siempre que la condición del if evalúe a false. Juntas expresan una bifurcación clara: "haz esto — de lo contrario, haz aquello."

Esta página cubre la sintaxis exacta, la diferencia entre else, elseif y una cadena de ifs, la sintaxis alternativa con dos puntos usada en plantillas HTML, y los errores comunes que confunden a la gente (como confundir = con ==).

Sintaxis

Un bloque else solo puede aparecer inmediatamente después de un if (o después de un elseif). No tiene condición propia:

<?php

if (condition) {
  // runs when condition is truthy
} else {
  // runs when condition is falsy
}

Exactamente uno de los dos bloques se ejecuta, nunca ambos ni ninguno. La rama else captura todo lo que la condición del if no capturó, por lo que no necesitas escribir manualmente la condición opuesta.

Un ejemplo básico

<?php

$myNumber = 5;

if ($myNumber == 4) {
  echo "Number is 4";
} else {
  echo "Number is not 4";
}

// Output: Number is not 4

Como $myNumber es 5, la condición $myNumber == 4 es false, por lo que el control pasa al bloque else.

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

¿Qué se considera "falso"?

El bloque else se ejecuta siempre que la condición del if sea falsy — no solo cuando es literalmente false. PHP trata los siguientes valores como falsy: false, 0, 0.0, "0", "" (string vacío), null y el array vacío []. Todo lo demás es truthy.

<?php

$cart = [];

if ($cart) {
  echo "You have items in your cart.";
} else {
  echo "Your cart is empty."; // an empty array is falsy
}

// Output: Your cart is empty.

Esto es útil para verificar "¿hay algo aquí?", pero sé cuidadoso: "0" y 0 son falsy, por lo que un valor que te importa puede acabar en la rama else. Cuando necesites una prueba exacta, compara explícitamente (if ($x === 0)) en lugar de depender de la truthiness.

else vs elseif vs ifs independientes

Un if/else simple tiene solo dos resultados. Cuando necesitas más de dos, usa elseif en lugar de apilar sentencias if independientes:

<?php

$score = 72;

if ($score >= 90) {
  echo "Grade: A";
} elseif ($score >= 70) {
  echo "Grade: B";
} else {
  echo "Grade: C or lower";
}

// Output: Grade: B

La cadena se detiene en la primera rama que coincide, por lo que el orden importa — coloca primero las condiciones más específicas o más altas. Usar dos bloques if separados evaluaría ambas condiciones de forma independiente y podría imprimir dos calificaciones. Consulta PHP if, else, elseif para una comparación más completa.

Sintaxis alternativa (con dos puntos)

Cuando mezclas PHP con HTML en una plantilla, el estilo de llaves puede ser difícil de leer. PHP ofrece una sintaxis alternativa que reemplaza { por : y cierra el bloque con endif:

<?php $loggedIn = true; ?>

<?php if ($loggedIn): ?>
  <p>Welcome back!</p>
<?php else: ?>
  <p>Please log in.</p>
<?php endif; ?>

Ambos estilos se comportan de forma idéntica; la forma con dos puntos simplemente mantiene las plantillas más ordenadas.

Anidamiento

Un if/else puede estar dentro de otra rama else. Cada else siempre se enlaza al if sin coincidencia más cercano:

<?php

$age = 17;
$hasGuardian = true;

if ($age >= 18) {
  echo "Admitted.";
} else {
  if ($hasGuardian) {
    echo "Admitted with a guardian.";
  } else {
    echo "Not admitted.";
  }
}

// Output: Admitted with a guardian.

Si te encuentras anidando más de uno o dos niveles, elseif o una sentencia switch suele ser más legible.

Error común: = vs ==

Un bug frecuente es escribir = (asignación) donde se quería == (comparación). La línea siguiente asigna 4 a $x, y como 4 es truthy, la rama if siempre se ejecuta — el else se vuelve inalcanzable:

<?php

$x = 1;

if ($x = 4) {        // assignment, not comparison!
  echo "Always runs";
} else {
  echo "Never runs";
}

// Output: Always runs

Usa == para comparación flexible o === para comparación estricta (con verificación de tipo). La página de operadores de comparación los lista todos.

Ternario: una forma abreviada para casos simples

Cuando ambas ramas solo producen un valor, el operador ternario ?: es una alternativa compacta a un if/else completo:

<?php

$age = 20;
$status = $age >= 18 ? "adult" : "minor";

echo $status;

// Output: adult

Reserva esto para decisiones cortas de un solo valor — la lógica con múltiples sentencias se mantiene más clara como un if/else real.

Resumen

  • else se ejecuta solo cuando la condición del if (o elseif) precedente es falsy; exactamente una rama se ejecuta.
  • "Falsy" incluye false, 0, "", null y [] — no solo el literal false.
  • Usa elseif para más de dos resultados, y la sintaxis con dos puntos/endif dentro de plantillas HTML.
  • Presta atención a = vs ==, y usa el ternario ?: cuando solo necesites elegir un valor.

Práctica

Práctica
¿Qué indica la sentencia 'else' en PHP?
¿Qué indica la sentencia 'else' en PHP?
Was this page helpful?