Programación

07/08/2011

PHP – Estructura de control – Loop

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

Doctrine2 – Getting Started Issues

Luego de querer instalar y hacer funcionar doctrine en nuestro querido y amado Windows, me encontré con un par de problemas, y por lo que vi en internet a varios le paso lo mismo, vamos a tomar como ejemplo el Doctrine –...
by AgeValed
1

 
 
PHP

Zend Framework – Almacenamiento de sesión en base de datos

En este mini tutorial voy a mostrarles como guardar la sesión en base de datos con ZF 1, esto es muy util para manejo de sesiones en un entorno con múltiples servidores. Material Relacionado Zend_Session_SaveHandler_DbTable Z...
by AgeValed
0

 
 

PHP Conference Argentina 2013

El 4 y 5 de Octubre se celebrará, en la Ciudad de Buenos Aires (Argentina), la PHP Conference Argentina, edición local de la conferencia PHP más popular. Esta edición no solamente está destinada a los programadores PHP, ...
by AgeValed
0

 

 

PHP 5.4.0 liberado!

Les comento que ya se encuentra la nueva versión de PHP liberada, la versión 5.4.0, luego de varios updates que se hicieron a la versión PHP 5.3 ya contamos con nuevas versión que incluye (según ellos) un gran núme...
by AgeValed
0

 
 
PHP

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

 




4 Comentarios


  1. hola y que es eso de
    /* el valor presentado sería
    $i antes del incremento
    (post-incremento) */ ?
    gracias


    • Esto quiere decir que primer hace el echo y LUEGO hace el incremento a la variable, el resultado de eso seria:

      1
      2
      3
      4
      6
      7
      8
      9
      10

      al salir del while el valor de $i seria 11

      si utilizas ++$i en vez de $i++ el resultado seria:

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11

      al salir del while el valor de $i seria 11 también, pero te imprimo el 11 dentro del while, hace el incremento primero y después hace el echo.

      Saludos y espero que se haya entendido! 🙂


  2. LIPSE

    hola mira me dejaron un trabajo de pilas en php pero utilizo la version 5.3.1 e buscado tutoriales y manuales pero no encuentro nada solo encuentro en c y c++ pero como ya casi estan obsoleto pues me gustaria hacerlo en php me gustaria que me ayudes ok gracias



Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.