JTagua

Inicio » PHP » Estructuras de control » if/else/else if

Category Archives: if/else/else if

Anuncios

Tutorial PHP(27): if, else, elseif, else if.

if

(PHP 4, PHP 5)

El constructor if es una de las características más importantes de muchos lenguajes, incluido PHP. Permite la ejecución condicional de fragmentos de código. PHP dispone de una estructura if que es similar a la de C:

if (expr)
sentencia

Como se describe en la sección sobre expresiones , la expresión es evaluada a su valor booleano. Si la expresión se evalúa como TRUE, PHP ejecutará la sentencia y si se evalúa como FALSE la ignorará. Más información sobre qué valores evalúan como FALSE se puede encontrar en la sección ‘Convirtiendo a booleano’.

El siguiente ejemplo mostraría a es mayor que b si $a es mayor que $b:

<?php
<!--?php <span class="hiddenSpellError" pre="php "-->if ($a --> $b) {
echo "a es mayor que b";
}
?>

A menudo se desea tener más de una sentencia para ser ejecutada condicionalmente. Por supuesto, no hay necesidad de envolver cada sentencia con una cláusula if. En cambio, se pueden agrupar varias sentencias en un grupo de sentencias. Por ejemplo, este código mostraría a es mayor que b si $a es mayor que $b y entonces asignaría el valor de $a a $b:

<?php
<!--?php <span class="hiddenSpellError" pre="php "-->if ($a --> $b) {
echo "a es mayor que b";
$b = $a;
}
?>

Las sentencias if pueden anidarse dentro de otra sentencias if infinitamente, lo cual provee completa flexibilidad para la ejecución condicional de diferentes partes del programa.

else

(PHP 4, PHP 5)

Con frecuencia se desea ejecutar una sentencia si una determinada condición se cumple y una sentencia diferente si la condición no se cumple. Esto es para lo que sirve else. El else extiende una sentencia if para ejecutar una sentencia en caso que la expresión en la sentencia if se evalúe como FALSE. Por ejemplo, el siguiente código deberá mostrar a es mayor que b si $a es mayor que $b y a NO es mayor que b en el caso contrario:

<?php
 if ($a --> $b) {
echo "a es mayor que b";
} else {
echo "a NO es mayor que b";
}
?>

La sentencia else sólo es ejecutada si la expresión if es evaluada como FALSE y si hay algunas expresiones elseif – sólo se ejecuta si también todas son evaluadas como FALSE (ver elseif).

elseif/else if

(PHP 4, PHP 5)

elseif, como su nombre lo sugiere, es una combinación de if y else. Del mismo modo que else, extiende una sentencia if para ejecutar una sentencia diferente en caso que la expresión if original se evalúe como FALSE. Sin embargo, a diferencia de else, esa expresión alternativa sólo se ejecutará si la expresión condicional del elseif se evalúa como TRUE. Por ejemplo, el siguiente código debe mostrar a es mayor que b, a es igual que b o a es menor que b:

<?php
if ($a > $b) {
    echo "a es mayor que b";
} elseif ($a == $b) {
    echo "a es igual que b";
} else {
    echo "a es menor que b";
}
?>

Puede haber varios elseif dentro de la misma sentencia if. La primera expresión elseif (si hay alguna) que se evalúe como TRUE sería ejecutada. En PHP también se puede escribir ‘else if’ (en dos palabras) y el comportamiento sería idéntico al de ‘elseif’ (en una sola palabra). El significado sintáctico es ligeramente diferente (si se está familiarizado con C, este es el mismo comportamiento) pero la conclusión es que ambos resultarían tener exactamente el mismo comportamiento.

La sentencia elseif es ejecutada solamente si la expresión if precedente y cualquiera de las expresiones elseif precedentes son evaluadas como FALSE, y la expresión elseif actual se evalúa como TRUE.

Nota: Tenga en cuenta que elseif y else if serán considerados exactamente iguales sólamente cuando se utilizan corchetes como en el ejemplo anterior. Al utilizar los dos puntos para definir las condiciones if/elseif, no debe separarse else if en dos palabras o PHP fallará con un error del interprete.

<?php
/* Método incorrecto: */
if($a > $b):
    echo $a." es mayor que ".$b;
else if($a == $b): // No compilará
    echo "La línea anterior provoca un error del interprete.";
endif;

/* Método correcto: */
if($a > $b):
    echo $a." es mayor que ".$b;
elseif($a == $b): // Tenga en cuenta la combinación de las palabras.
    echo $a." igual ".$b;
else:
    echo $a." no es ni mayor que ni igual a ".$b;
endif;
?>
Anuncios