Programación

2011/08/07

PHP – Estructura de control – Loop

PHP Logo AgeValed

Luego de hacer un resumen de las Estructuras de control condicionales, este es el turno de continuar los resúmenes sobre las Estructuras de control Loops en PHP.

While

Los bucles while son el tipo más sencillo de bucle en PHP. Se comportan igual que su contrapartida en C. La forma básica de una sentencia while es:

while (expr)
       sentencia

El significado de una sentencia while es simple. Le dice a PHP que ejecute las sentencias anidadas, tanto como la expresión while se evalúe como TRUE. El valor de la expresión es verificado cada vez al inicio del bucle, por lo que incluso si este valor cambia durante la ejecución de las sentencias anidadas, la ejecución no se detendrá hasta el final de la iteración (cada vez que PHP ejecuta las sentencias contenidas en el bucle es una iteración). A veces, si la expresión while se evalúa como FALSE desde el principio, las sentencias anidadas no se ejecutarán ni siquiera una vez.

/* ejemplo 1 */
$i = 1;
while ($i <= 10) {
    echo $i++;  /* el valor presentado sería
                   $i antes del incremento
                   (post-incremento) */
}

Sintaxis alternativa

/* ejemplo 2 */
$i = 1;
while ($i <= 10):
    echo $i;
    $i++;
endwhile;

Mas información -> Link

Do-While

Los bucles do-while son muy similares a los bucles while, excepto que la expresión verdadera es verificada al final de cada iteración en lugar que al principio. La diferencia principal con los bucles while es que está garantizado que corra la primera iteración de un bucle do-while (la expresión verdadera sólo es verificada al final de la iteración), mientras que no necesariamente va a correr con un bucle while regular (la expresión verdadera es verificada al principio de cada iteración, si se evalúa como FALSE justo desde el comienzo, la ejecución del bucle terminaría inmediatamente).

Hay una sola sintaxis para bucles do-while:

$i = 0;
do {
    echo $i;
} while ($i > 0);

El bucle de arriba se ejecutaría exactamente una sola vez, ya que después de la primera iteración, cuando la expresión verdadera es verificada, se evalúa como FALSE ($i no es mayor que 0) y termina la ejecución del bucle.

Mas información -> Link

For

Los bucles for son los ciclos más complejos en PHP. Se comportan como sus contrapartes en C. La sintaxis de un bucle for es:

for (expr1; expr2; expr3)
sentencia

La primera expresión (expr1) es evaluada (ejecutada) una vez incondicionalmente al comienzo del bucle.

En el comienzo de cada iteración, la expr2 es evaluada, Si es TRUE, el blucle continúa y las sentencias anidadas son ejecutadas. Si se evalúa como FALSE, termina la ejecución del bucle.

Al final de cada iteración, la expr3 es evaluada (ejecutada).

Cada una de las expresiones puede esta vacía o contener múltiples expresiones separadas por comas. En la expr2, todas las expresiones separadas por una coma son evaluadas pero el resultado se toma de la última parte. Que la expr2 esté vacía significa que el bucle deberá ser corrido indefinidamente (PHP implícitamente lo considera como TRUE, como en C). Esto puede no ser tan inútil como se pudiera pensar, ya que muchas veces se quiere terminar el bucle usando una sentencia condicional break en lugar de ustilizar la expresión verdadera del for.

Considere los siguientes ejemplos. Todos ellos muestran los números del 1 al 10:

//Ejemplo 1
for ($i = 1; $i <= 10; $i++) {
    echo $i;
}

Sintaxis Alternativa

for ($i = 1; $i <= 10; $i++) :
    echo $i;
endfor;

Mas información -> Link

Foreach

PHP 4 introdujo un constructor foreach, muy parecido al de Perl y algunos otros lenguajes. Simplemente da un modo fácil de iterar sobre arrays. Foreach sólo trabaja sólo sobre arrays y resultará en un error al intentar usarlo en una variable con un diferente tipo de datos o una variable no inicializada. Hay dos sintaxis; la segunda es una extensión menor, pero útil de la primera:

foreach (array_expression as $value)
sentencias
foreach (array_expression as $key => $value)
sentencias

La primera forma recorre el array dado por array_expression. En cada ciclo, el valor de el elemento actual es asignado a $value y el puntero interno del array es avanzado en uno (así en el próximo ciclo se estará mirando el siguiente elemento).

La segunda manera hace lo mismo, excepto que la clave del elemento actual será asignada a la variable $key en cada ciclo.

$a = array(1,2,3,4,5);
foreach ($a as $value){
    echo $value
}

Sintaxis alternativa

$a = array(1,2,3,4,5);
foreach ($a as $value):
    echo $value
endforeach;

A partir de PHP 5, se pueden modificar fácilmente elementos del array al preceder $value con &. Esto asignará una referencia en lugar de copiar el valor.

$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}

Mas información -> Link

Break

Break termina la ejecución de la estructura actual for, foreach, while, do-while o switch.

Break acepta un argumento numérico opcional el cual indica de cuantas estructuras anidadas encerradas se debe salir.

$arr = array('uno', 'dos', 'tres', 'cuatro', 'pare', 'cinco');
while (list(, $val) = each($arr)) {
    if ($val == 'pare') {
        break;    /* Se puede también escribir 'break 1;' aquí. */
    }
    echo "$val\n";
}

/* Usando el argumento opcional. */

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "En 5\n";
        break 1;  /* Sólo sale del switch. */
    case 10:
        echo "En 10; saliendo\n";
        break 2;  /* Sale del switch y del while. */
    default:
        break;
    }
}

Mas información -> Link

Continue

Continue se utiliza dentro de las estructuras de bucle para saltarse el resto de la actual iteración del bucle y continuar la ejecución en la evaluación de la condición y entonces el comienzo de la siguiente iteración.

Continue acepta un argumento numérico opcional el cual indica hasta el final de cuantos niveles de bucles cerrados se debe saltar.

while (list($key, $value) = each($arr)) {
    if (!($key % 2)) { // saltar miembros impares
        continue;
    }
    do_something_odd($value);
}

$i = 0;
while ($i++ < 5) {
    echo "Outer\n";
    while (1) {
        echo "Middle\n";
        while (1) {
            echo "Inner\n";
            continue 3;
        }
        echo "This never gets output.\n";
    }
    echo "Neither does this.\n";
}

Mas información -> Link

Pronto seguiremos con mas resumenes de PHP! :)



About the Author

AgeValed
Pablo Ignacio de la Vega Ibañez, también conocido en algunos lugares como AgeValed, el creador de este blog. Actualmente estoy trabajando como Líder Técnico y Supervisor de Equipo en el área de desarrollo PHP.




 
 

 
PHP
PHP Logo AgeValed

PHP – Errores

En este resumen voy a escribir sobre los el control y registro de los errores en PHP. PHP nos permite definir nuestras reglas para controlar los errores, crear errores personificados o como serán registrados/notificados. Tipos...
by AgeValed
0

 
 
PHP
PHP Logo AgeValed

PHP – Funciones

Funciones en PHP, este resumen debería haberlo hecho un par de post antes, pero se me paso, así que mas vale tarde que nunca! Espero que lo sigan disfrutando y que les interese este tipo de post! Mientras alguien lo lea ya es...
by AgeValed
0

 
 
PHP
PHP Logo AgeValed

PHP – Constantes

Vamos a continuar con los resúmenes de PHP, en este post voy a escribir un resumen sobre las constantes. Una constante es un identificador (nombre) para expresar un valor simple. Como el nombre sugiere, este valor no puede var...
by AgeValed
5

 

 
PHP
PHP Logo AgeValed

PHP – Constructores del Lenguaje

Llega el sexto resumen de la serie PHP, en este post haré un resumen de los diferentes constructores que podemos llegar a utilizar. declare El constructor declare es usado para fijar directivas de ejecución para un bloque de ...
by AgeValed
9

 
 
PHP
PHP Logo AgeValed

PHP – Estructura de control – Condicionales

Es el turno de escribir el tercer post de la serie de PHP, ya escribí sobre Sintaxis básicas, Tipos de datos y los Operadores. Este es el turno de hacer un resumen de las estructuras de control, específicamente de los c...
by AgeValed
1

 




Deja un comentario:

0 Comentarios


Be the first to comment!


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">