foreach

PHP4 ( PHP3 no ) incluye una construcción foreach , tal como perl y algunos otros lenguajes . Esto simplemente da un modo fácil de iterar sobre arrays . 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 .

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



Nota : Hay que tener en cuanta que foreach con una copia de la lista ( array ) especificada y no la lista en si , por ello el puntero de la lista no es modificado como en la construcción each .



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

 
reset(

 
$arr

 
)

 
;

 
while

 
(

 
list

 
(

 
,

 
$value

 
)

 
=

 
each

 
(

 
$arr

 
)

 
)

 
{

 
echo

 
"Valor

 
:

 
$value

 
br

 
\n"

 
;

 
}

 
foreach

 
(

 
$arr

 
as

 
$value

 
)

 
{

 
echo

 
"Valor

 
:

 
$value

 
br

 
\n"

 
;

 
}



Las siguientes también son funcionalidades idénticas:
 
reset(

 
$arr

 
)

 
;

 
while

 
(

 
list

 
(

 
$key

 
,

 
$value

 
)

 
=

 
each

 
(

 
$arr

 
)

 
)

 
{

 
echo

 
"Key

 
:

 
$key

 
;

 
Valor

 
:

 
$value

 
br

 
\n"

 
;

 
}

 
foreach

 
(

 
$arr

 
as

 
$key

 
=

 
$value

 
)

 
{

 
echo

 
"Key

 
:

 
$key

 
;

 
Valor

 
:

 
$value

 
br

 
\n"

 
;

 
}





Algunos ejemplos más para demostrar su uso :

 
/*

 
foreach

 
ejemplo

 
1

 
:

 
sólo

 
valor*

 
/

 
$a

 
=

 
array(

 
1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
foreach($a

 
as

 
$v

 
)

 
{

 
print

 
"Valor

 
actual

 
de

 
\$a

 
:

 
$v.\n"

 
;

 
}

 
/

 
*

 
foreach

 
ejemplo

 
2

 
:

 
valor

 
(con

 
clave

 
impresa

 
para

 
ilustrar

 
)

 
*

 
/

 
$a

 
=

 
array(1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
$i

 
=

 
0

 
;

 
/

 
*

 
sólo

 
para

 
propósitos

 
demostrativos

 
*

 
/

 
foreach($a

 
as

 
$v

 
)

 
{

 
print

 
"\$a[$i

 
]

 
=

 
$k.\n"

 
;

 
}

 
/

 
*

 
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"

 
;

 
}