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 4Como $myNumber es 5, la condición $myNumber == 4 es false, por lo que el control pasa al bloque else.
¿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 sí 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: BLa 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 runsUsa == 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: adultReserva 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
elsese ejecuta solo cuando la condición delif(oelseif) precedente es falsy; exactamente una rama se ejecuta.- "Falsy" incluye
false,0,"",nully[]— no solo el literalfalse. - Usa
elseifpara más de dos resultados, y la sintaxis con dos puntos/endifdentro de plantillas HTML. - Presta atención a
=vs==, y usa el ternario?:cuando solo necesites elegir un valor.