Uso para cada uno
Estos incluyen:
tipo:tipo:identificador.
Identificador: variable iterativa que representa los elementos de la colección. Si la variable de iteración es un tipo de valor, también es válida una variable de solo lectura que no se puede modificar.
Expresión: una expresión de colección o matriz de objetos. El tipo de elementos de la colección debe ser convertible al tipo de identificador. No utilice expresiones que se evalúen como nulas.
En cambio, debe evaluarse como un tipo que implementa IEnumerable o declara un método GetEnumerator. En el último caso, GetEnumerator debería devolver un tipo que implemente IEnumerator o todos los métodos definidos en la declaración de IEnumerator.
Datos extendidos
Php 4 introdujo la estructura foreach, que es similar a Perl y otros lenguajes. Esta es sólo una forma sencilla de iterar sobre una matriz. Foreach solo se puede usar con matrices y se producirá un error al intentar usarlo con otros tipos de datos o variables no inicializadas. Hay dos sintaxis, la segunda es menos importante, pero es una extensión útil de la primera.
sentencia foreach (expresión de matriz como $valor).
El primer formato itera sobre la matriz array_expression dada. En cada bucle, el valor de la celda actual se asigna a $value y el puntero dentro de la matriz avanza un paso (por lo que la siguiente celda se obtendrá en el siguiente bucle).
sentencia foreach(array_expression as $key =>$value).
El segundo formato hace lo mismo, excepto que el nombre clave de la celda actual también se asigna a la variable $key en cada bucle.
A partir de PHP 5, también es posible atravesar objetos. Aviso:? Cuando foreach comienza a ejecutarse, el puntero dentro de la matriz apuntará automáticamente a la primera celda. ¿Significa esto que no es necesario llamarlo antes del bucle foreach? reiniciar().
Nota: A menos que se haga referencia a una matriz, foreach opera en una copia de la matriz especificada, no en la matriz en sí. Entonces el puntero de la matriz no lo será. cada()? La estructura ha cambiado y las modificaciones realizadas en las celdas de la matriz devuelta no afectarán la matriz original. Sin embargo, el puntero interno de la matriz original avanza durante el procesamiento de la matriz. Suponiendo que el bucle foreach se ejecuta hasta el final, el puntero interno de la matriz original apuntará al final de la matriz.