En este articulo explicaré el funcionamiento y uso del bucle WHILE. Los bucles while son los tipos de bucle más simples en PHP, actua de forma muy parecida al bucle FOR, pero se diferencia de éste que no incluye en su declaración la inicialización de la variable de control del bucle, ni su incremento o decremento.
La sintaxis básica del bucle while es la siguiente:
Código PHP:
<?php
while ( expresión ) {
sentencia (s);
}
?>
NOTA: Al igual que comenté en el for, las llaves no son estrictamente necesarias para cuando dentro del while o for hay solo una sentencia, pero si recomendable ponerlas. Cuando hay más de una sentencia dentro del while o for, hay que poner las llaves.
Ahora, como he hecho en otros articulos voy a traducir a 'lenguaje humano' que significa o que hace el while, tomo el ejemplo de sintaxis básica que he puesto arriba, sería algo así: Mientras (while) expresión sea verdadero (mientras la expresión que pongas se cumpla y sea cierto) ejecuta la(s) sentencia(s).
Así de fácil.
Ahora el 'rollo' teorico. Con el bucle while podrás ejecutar un conjunto de instrucciones un número indeterminado de veces, siempre y cuando el resultado de la expresión sea verdadera (debe ser una expresión que se evalue a un valor lógico). Si la expresión se evalua y da true se ejecutan las sentencias del bucle, después de ejecutarlas vuelve a evaluar la expresión. Esto se repetirá hasta que la expresión se evalue y de false (no se cumpla la expresión), en cuyo caso dejaria de ejecutarse el bucle while y continuaría con la ejecución del script (con lo que haya después de la llave } que cierra el while).
Vale, ahora el ejemplo correspondiente, empecemos con algo sencillo.
Código PHP:
<?php
$cuenta = 0;
echo "Voy a entrar al bucle while <br>";
while ( $cuenta <= 10) {
echo "Cuenta vale $cuenta <br>";
$cuenta++;
}
echo "He salido del bucle while";
?>
Como verás el ejemplo es sencillo. Simplemente es una cuenta de 0 a 10, ambos inclusive. Analicemos el ejemplo. Lo primero que hago es inicializar a 0 la variable $cuenta (es recomendable inicializar las variables). A continuación imprimo por pantalla una linea antes de entrar al bucle, simplemente para que veas cuando está dentro y cuando no. Bien, llega el while. Como expresión a evaluar he puesto $cuenta <= 10, quiere decir que mientras el valor de $cuenta sea menor o igual a 10 (si no recuerdas los operadores de comparación leete el articulo pulsando aquí), las sentencias del bucle se ejecutarás hasta que ésta expresión sea falsa.
Entonces, al principio, hemos inicializado $cuenta a 0, por lo que $cuenta (que vale 0) es menor o igual que 10 (esto da true, verdadero), asi pues entra en el bucle e imprimer mediante el echo el valor de $cuenta (dando como resultado: Cuenta vale XX), recuerda que puedes usar código HTML dentro de php, en este caso he usado <br> para que me ponga el valor en cada linea diferente. IMPORTANTE: ¿Que sentido tiene $cuenta++? sencillo, como he dicho al principio y a diferencia del for, el while no tiene operador de incremento / decremento en su expresión, por lo que tendrás que ponerlo tu antes de la llave que cierra el while (mira el ejemplo), esto quiere decir que cada vez que ejecute las sentencias, incremente en +1 el valor de $cuenta, y a continuación vuelve a evaluar la expresión hasta que no se cumpla (sea false, falso). Para recordar esto, leete los operadores de incremento / decremento.
Finalmente, cuando el bucle haya dado varias vueltas y la variable $cuenta haya alcanzado el valor 11, evaluará la expresión, ésta dará false, y las sentencias del bucle no volverán a ejecutarse y seguiré el curso normal del script, en este caso lo siguiente al bucle while es que imprima por pantalla He salido del bucle while.
Espero que haya quedado claro, al principio si eres novato/a en esto tal vez lo veas un poco raro, pero verás con el tiempo que no es tan dificil.
Otro ejemplo.
Código PHP:
<?php
$i = 1;
$suma = 0;
while ( $i < 10) {
$suma = $suma + $i;
$i ++;
}
echo "<strong>Suma total: $suma</strong>";
?>
En este ejemplo, similar al anterior, lo que hacemos es una cuenta de 1 a 10, y en cada iteración del bucle acumulo la suma de los valores del 1 al 10, dando como resultado 45.
Vamos a hacer un ejemplo un poco más elaborado, combinando el bucle while con estructuras de control, com oel IF, mira el siguiente ejemplo: