Estructuras de Control
PHP Manual

foreach

PHP 4 (PHP3 no) incluye una construcción foreach, tal como perl y algunos otros lenguajes. Esto simplemente da un modo fácil de iterar sobre matrices. foreach funciona solamente con matrices y devolverá un error si se intenta utilizar con otro tipo de datos ó variables no inicializadas. Hay dos sintaxis; la segunda es una extensión menor, pero útil de la primera:

foreach(expresion_array as $value) sentencia
foreach(expresion_array as $key => $value) sentencia

La primera forma recorre el array dado por expresion_array. En cada iteración, el valor del elemento actual se asigna a $value y el puntero interno del array se avanza en una unidad (así en el siguiente paso, se estará mirando el elemento siguiente).

La segunda manera hace lo mismo, salvo que la clave del elemento actual será asignada a la variable $key en cada iteración.

Note: Cuando foreach comienza su primera ejecución, el puntero interno a la matriz se reinicia automáticamente al primer elemento de la matriz. Esto significa que no se necesita llamar a reset() antes de un bucle foreach.

Note: Hay que tener en cuenta queforeach trabaja con una copia de la matriz especificada y no la lista en si, por ello el puntero de la lista no es modificado como en la función each(), y los cambios en el elemento de la matriz retornado no afectan a la matriz original. De todas maneras el puntero interno a la matriz original avanza al procesar la matriz. suponiendo que bucle foreach se ejecuta hasta el final, el puntero interno a la matriz estar/aacute; al final de la matriz.

Note: foreach no soporta la caracteristica de suprimir mensajes de error con '@'.

Puede haber observado que las siguientes son funcionalidades idénticas:

<?php
$arr 
= array("one""two""three");
reset ($arr);
while (list(, 
$value) = each ($arr)) {
    echo 
"Value: $value<br>\n";
}

foreach (
$arr as $value) {
    echo 
"Value: $value<br>\n";
}
?>
Las siguientes también son funcionalidades idénticas:
<?php
reset
$arr );
while( list( 
$key$value ) = each$arr ) ) {
   echo 
"Key: $key; Valor: $value&lt;br&gt;\n";
}

foreach( 
$arr as $key => $value ) {
   echo 
"Key: $key; Valor: $value&lt;br&gt;\n";
}
?>

Algunos ejemplos más para demostrar su uso:

<?php
/* foreach ejemplo 1: s&oacute;lo valor*/
$a = array(12317);

foreach(
$a as $v) {
   print 
"Valor actual de \$a: $v.\n";
}

/* foreach ejemplo 2: valor (con clave impresa para ilustrar) */
$a = array(12317);

$i 0/* s&oacute;lo para prop&oacute;sitos demostrativos */

foreach($a as $v) {
   print 
"\$a[$i] => $v.\n";
   
$i++;
}

/* foreach ejemplo 3: clave y valor */
$a = array(
   
"uno" => 1,
   
"dos" => 2,
   
"tres" => 3,
   
"diecisiete" => 17
);

foreach(
$a as $k => $v) {
   print 
"\$a[$k] => $v.\n";
}

/* foreach ejemplo 4: matriz multi-dimensional */

$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach(
$a as $v1) {
    foreach (
$v1 as $v2) {
        print 
"$v2\n";
    }
}

/* foreach ejemplo 5: matriz din&aacute;mica */
     
foreach(array(12345) as $v) {
    print 
"$v\n";
}
?>


Estructuras de Control
PHP Manual