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_
Nota:
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_
Nota:
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_
Nota: 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: