Los ciclos en php son bien sencillos. Siguen la misma logica que utilizamos en pseudocodigo, lo que obviamente como ya vimos anteriormente la sintaxis cambia. Es importante conocer los ciclos porque cada uno tiene caracteristicas unicas que puedes aprovechar en cada problema. Tecnicamente pudes usar cualquier ciclo en cualquier problema, pero vas a obtener mejores resultados si utilizas el que lleva.

Los ciclos en php vamos a estudiar son el While, el For y el Foreach. El While se utiliza para cuando no conoces cuantas iteraciones se van a ejecutar en el problema, pero si sabes que condicion se debe cumplir para que termine. El For es el mas utililizado, y lo puedes aprovechar en problemas que conoces exactamente cuantas repeticiones necesitas ejecutar. Ademas es muy util porque en cada iteracion tienes acceso a la variable que itera. El Foreach, no por ultimo menos importante, lo utilizamos para iterar en colecciones de datos, digase arrays, matrices, etc.

El ciclo While

Como vimos anteriormente, el ciclo while muestra su potencial cuando no conocemos la cantidad de iteraciones que se van a ejecutar en el problema. Propongamos el siguiente problema:

Realice un programa que pida por pantalla numeros enteros indefinidamente y que cuando se apriete la tecla S, sume los numeros e imprima el resultado.

Este es un clasico problema while, precisamente porque no sabemos la cantidad de numeros que el usuario va a entrar por teclado, es su desicion y no tenemos el control de eso. Una posible solucion podria ser esta:

$exit = false;
$suma = 0;

while ($exit == false){
    echo "Introducza numero: ";
    $number = trim(fgets(STDIN));

    if ($number === "S"){
        $exit = true;
    } else {
        $suma += (int)$number;
    }
}

echo "El resultado de la suma es: ". $suma;

Analisis del codigo del Ejemplo 1

Se declaran las variables $exit y $suma. En $exit almacenamos un false, y basicamente con esta variable controlamos el ciclo while. En $suma acumulamos los valores que se van entrando por teclado a excepcion de la «S». Mientras esta variable sea false, el ciclo se seguira ejecutando indefinidamente. Lo que hacemos es que dentro del ciclo sabiendo ya lo que hace el usuario, la ponemos en true. Esto sucede cuando la informacion que se entra por teclado es un caracter «S». No te fijes por favor en la funcion trim(), no nos compete ahora. Cuando la condicion $number (valor entrado por teclado) sea «diferente» al caracter S, entonces en el sumador $suma vamos sumando valores de $number. Si te fijas, fuera del ciclo While tenemos la impresion del resultado en pantalla. O sea, si y solo si el ciclo se detiene, imprimimos el resultado. Lo vas cogiendo?

El ciclo For

El ciclo For viene a ser muy util en la mayoria de problemas. Esto es por su principal caracteristica, tienes acceso de lectura a su variable iteradora. Si conoces cuantas veces se va a ejecutar el ciclo y necesitas en cada caso saber en que iteracion estas, definitivamente usas un ciclo For. Te propongo el siguiente problema:

Realice un programa que imprima los numeros pares que estan comprendidos del 1 al 100.

Es evidente aqui la necesidad de un ciclo For, aunque tambien podriamos usar un While. Te muestro el ejemplo de codigo:

for ($i = 1; $i <= 100; $i++){
    if (($i % 2) == 0)
      echo $i."\n";
}

Analisis del codigo del Ejemplo 2

La declaracion del ciclo For se define como : Iniciando en $i = 0; y mientras que $i sea menor o igual a 100, entonces incrementa $i en 1. Lo que esta dentro de las llaves, es el bloque de codigo que se ejecutara en cada iteracion. Dicho bloque solo tiene 2 lineas de codigo, una condicion y lo que se va a hacer cuando esta se cumpla. Sale a relucir el operador %, que su funcion es calcular el modulo de una division. O sea, divides cualquiera que sea el valor de $i por 2, y el resto de esa division es lo que te devuelve el operador Modulo. Es sabido que si un numero es divisible por dos, el resto de su division siempre es cero. Por tanto usamos esto para determinar si el numero es par. Interesante verdad?

El ciclo Foreach

Como dijimos anteriormente, la funcion principal del ciclo Foreach es iterar en colecciones de datos ya sean arrays o matrices. No tienes el control de en que iteracion estas, pero puedes hacerlo sin ningun tipo de problemas. Iterar colecciones tambien se puede hacer con ciclos For y While, pero la practica nos sugiere que utilicemos un Foreach por su simplicidad. Te propongo el siguiente ejemplo, y aunque aun no hemos visto arrays en php, igual vas a entender como funciona el foreach.

Dada una lista de 5 nombres, imprimir solo el 1 y el 3.

Digamos que ya tenemos una lista de nombres confeccionadas, o sea que no se introduce por teclado (aunque bien podria ser). Lo que hacemos es utilizar un foreach y auxiliarnos en un contador para saber en que iteracion estamos. Si estamos en la 1 o en la 3, imprimimos el valor.

$nombres = ['Ricardo', 'Claudia', 'Lucas', 'Idalmis', 'Maria'];

$i = 0;
foreach($nombres as $nombre){

    if ($i == 1 || $i == 3){  
         echo $nombre."\n";    
    }

    $i++;
}

Explicacion del Ejemplo 3

En la primera linea, declaramos una variable $nombres que va a contener los nombres del problema. A continuacion viene la definicion del ciclo foreach, que se lee como: Para cada elemento del array $nombres, creame una variable llamada $nombre e insertale el valor del elemento correspondiente. Digase eso como que para la primera iteracion, la variable $nombre va a almacenar el valor string ‘Ricardo’, para la segunda iteracion el valor ‘Claudia’ y asi hasta llegar a ‘Maria’. Como el ciclo foreach no te da en que iteracion estas, tenemos que auxiliarnos en una variable $i, que vendria a ser el contador. Dentro del bloque de codigo se establece la condicion que dice que si y solo si el valor de $i es 1 o 3, entonces que imprima el nombre de esta posicion. Fuera de la condicion (y aun dentro del ciclo ojo), se incrementa el contador. Esto es precisamente por lo que hablamos anteriormente, el foreach no da la iteracion ni la incrementa.

los ciclos en php

Conclusiones

Hemos visto los ciclos en php, y un ejemplo para ilustrar las bondades de cada uno. Como habras podido darte cuenta, no hay nada que te impida utilizar cada uno de los 3 ciclos en cada uno de los 3 problemas. Sin embargo puedes comprobar tu mismo poniendote como ejercicio realizar los 3 ejercicios con cada uno de los 3 ciclos que cada uno se ajusta mejor a cada problema. Con el tiempo y mucha practica, vas a ser capaz de identificar facilmente cual de los ciclos en php sirve mejor para cada problema.

Sigueme!
error