Desarrollo

Estructuras de control en PHP – 1ª parte

Desarrollo PHP

Hemos visto ya las estructuras de control condicional IF y ELSE y la estructura de control iterativo WHILE. Gracias a ellas, podemos empezar a encauzar nuestros programas para la toma de decisiones e incrementar su utilidad. En el actual artículo vamos a ver cómo se utilizan las estructuras de control en PHP.

Utilización en PHP

Va a ser muy sencillo de trasladar lo que vimos en anteriores artículos a PHP, pues seguimos una nomenclatura ya muy parecida para que nos sea más sencilla la transición.

La estructura IF

Como ya avanzamos, la estructura IF se compone de la evaluación de una condición y, seguidamente, las instrucciones que se deben ejecutar entre llaves. Veamos un sencillo ejemplo en el que intentamos conocer si un valor es mayor que otro.

<?php

if ($a > $b) {
  echo 'El valor ' . $a . ' es mayor que ' . $b;
}

?>

En la línea 3 de nuestro ejemplo vemos la forma de utilización, la cual se compone de la palabra if y, a continuación y entre paréntesis, la condición o condiciones (utilizando los operadores lógicos) que debe cumplir el IF. Lo que hacemos en este caso es evaluar si el valor de la variable $a es mayor al valor de la variable $b.

En el caso de que la condición del IF se cumpla, se ejecutarán las instrucciones que se encuentren entre las llaves. La llave de apertura debe abrirse justo después del cierre de los paréntesis del IF. Normalmente, y aunque en algunos lenguajes de programación no es obligatorio (como por ejemplo en PHP, donde no lo es pero sí en otros como Python), indentaremos las instrucciones que van dentro del IF para, a nuestros ojos, ver de un vistazo el código que se ejecuta si la condición es cierta.

La estructura ELSE

Si recordamos, la sentencia ELSE se utiliza para indicar la condición contraria a la que hemos colocado en el IF. Así, si en el IF hay una igualdad, en ELSE quedaría implícita una desigualdad. Si hay un mayor o igual, lo contrario sería un menor, etc. Veamos el código.

<?php

if ($a > $b) {
  echo 'El valor ' . $a . ' es mayor que ' . $b;
} else {
  echo 'El valor ' . $a . ' NO es mayor que ' . $b;
}

?>

Entendiendo lo que hacía IF, no caben muchas más explicaciones aquí. En el caso contrario se ejecutarán las instrucciones incluidas dentro del ELSE.

Cuidado
Lo contrario de $a > $b no es $b < $a porque, ¿y la condición de que sean iguales? Así pues, lo contrario sería cuando es menor o igual, es decir, $b <= $a. Parece evidente pero hay que tener cuidado, pues es un error en el que se cae de forma sencilla.

La estructura ELSEIF

Esta sentencia no la vimos en el artículo anterior donde definimos las estructuras de control condicionales. Sencillamente y como se puede decidir, esta estructura es una combinación que nos permite mejorar la legibilidad de nuestro código. Analicemos el siguiente ejemplo.

<?php

if ($a > $b) {
  echo 'El valor ' . $a . ' es mayor que ' . $b;
} elseif ($a < $b) {
  echo 'El valor ' . $a . ' es menor que ' . $b;
} else {
  echo 'El valor ' . $a . ' es igual que ' . $b;
}

?>

Leamos detenidamente el código. En la línea 3 está nuestra primera condición IF. Si aquí tuviéramos que $a es mayor que $b, entonces se ejecutaría la instrucción dentro del IF y no se haría nada más. Pero si la condición no fuera cierta, seguiríamos y llegaríamos al ELSEIF. Esta sentencia es una mezcla de ELSE y de IF, por lo que podríamos leerlo de forma que “en caso contrario si…” y evaluaríamos de nuevo la siguiente condición que, en el caso del ejemplo, es si $a es menor que $b. Pensemos que, en este ejemplo, todavía nos queda una opción más, pues puede que $a sea mayor que $b, que sea menor o, si no es ninguna de estas dos cosas, es que será igual. Por tanto, colocamos seguidamente un ELSE que se ejecutará siempre que las dos condiciones previas sean falsas.

Con estas sentencias, nuestro programa en búsqueda de cuál es mayor (o igual) quedaría completado de forma sencilla y muy legible.

Otras representaciones

La estructuras de control en PHP tienen también alguna otra forma de representarse que, en ocasiones, nos puede ayudar especialmente cuando estemos mezclando HTML (para creación de webs) por medio.

En ocasiones, podemos prescindir de las llaves cuando nuestra estructura sólo tenga una instrucción y nada más que una. También podemos utilizar dos puntos después de la condición para, a continuación, expresar nuestras instrucciones y, de esta manera, eliminar también las llaves. En este último caso, debemos indicar que hemos terminado nuestra estructura de control mediante la palabra ENDIF.

<?php

if ($a > $b):
  echo 'El valor ' . $a . ' es mayor que ' . $b;
elseif ($a < $b):
  echo 'El valor ' . $a . ' es menor que ' . $b;
else:
  echo 'El valor ' . $a . ' es igual que ' . $b;
endif;

?>

Como vemos en el ejemplo, hemos eliminado las llaves y colocado dos puntos después de las tres sentencias condicionales para finalizar toda la estructura con la palabra indicada. Cuando queramos colocar código PHP dentro de HTML (o HTML dentro de código PHP, como queráis decirlo), los dos puntos nos pueden ser de mayor utilidad visual como veremos en su momento.

La estructura WHILE

El bucle WHILE sigue los mismos principios estructurales que hemos visto hasta ahora. Esto es, la palabra que indica la estructura, la condición entre paréntesis y las instrucciones entre llaves (o, como acabamos de ver, dos puntos y finalizar con ENDWHILE). El siguiente ejemplo nos va mostrando por pantalla todos los números del 1 al 10.

<?php

$i = 1;
while ($i <= 10) {
  echo $i++;
}

?>

Es un buen momento para ver un ejemplo de lo que pueden hacer los operadores de incremento que vimos en un artículo anterior. En el ejemplo que hemos puesto, definimos la variable $i en la línea 3 con el valor 1 y, en la siguiente línea, leemos un “mientras $i sea menor o igual a 10…”. Posteriormente, en las instrucciones del bucle vemos que se imprime la variable $i y luego se incrementa en una unidad. Al haber escrito $i++ primero mostraremos su valor y luego se incrementará. Podríamos haberlo hecho en dos líneas (primero mostrar $i y luego otra línea para incrementarla), pero nos sirve para verlo como ejemplo. Si hubiéramos utilizado ++$i, primero hubiera aumentado el valor y luego se hubiera mostrado, cosa que no queríamos.

Podemos mejorar un poco este pequeño programa, pues si lo ejecutáramos veríamos que muestra 12345678910. Coloquemos algo de texto con alguna condición.

<?php

$i = 1;
while ($i <= 10) {
  echo $i++;
  if ($i <= 10) {
    echo ', ';
  }
}

?>

Simplemente hemos incorporado un IF dentro del bucle WHILE. Esta nueva condición se lee como “si $i es menor o igual que 10…” y, en caso que lo sea, la instrucción que hemos colocado es que muestre una coma y un espacio en blanco. ¿Qué va a provocar ésto? Que cada número impreso salga con una coma y un espacio detrás, pero en cuanto $i llegue al valor 10, no cumplirá la condición del IF, por tanto no imprimirá la coma y el espacio. Y tampoco cumplirá la condición del WHILE, por lo que seguirá y el programa finalizará. Así, nuestro programa mostrará 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 siendo quizá lo que buscábamos al mostrar los 10 primeros números.

Resumen

Hemos visto, con las estructuras de control en PHP, cómo escribir las sentencias IF, ELSE y WHILE con algunos detalles extras como el ELSEIF y diferentes formas de escritura. Todas siguen el mismo patrón de escribir la sentencia, su condición entre paréntesis y luego las instrucciones a ejecutar (entre llaves o no según cómo lo escribamos).

Ya podemos, por tanto, empezar a practicar con ellas en nuestros programas antes de continuar viendo más estructuras de control en PHP.

Deja un comentario