Principio de funcionamiento
1. Antes de la primera iteración, ejecute el método iterator::rewind().
Se ejecuta solo una vez, devuelve el primer elemento del iterador, pero el método no tiene valor de retorno
2. Verifique si el primer elemento es válido.
Los métodos de autenticación se pueden personalizar. Si el valor de retorno es verdadero, la ejecución continúa; si el valor de retorno es falso, la iteración termina.
3. foreach continúa llamando a Iterator.
Devuelve la clave y el valor de la característica especificada.
4. El cuerpo del método de foreach.
var_dump($clave,$valor)
5. Después de cada iteración, llame al iterador para determinar el siguiente elemento y repita el segundo paso.
Ejemplo
string(18) "myIterator::rewind" // Llame al método de rebobinado antes de que comience la iteración, regrese al primer elemento del iterador y ejecute $this->position = 1; string(17) "myIterator::valid" //Verifica si el elemento actual $this->array[1] es válido y continúa la ejecución si es válido; string(19) "myIterator::current" // Devuelve el valor correspondiente al elemento actual $this->array[0]='firstelement' string(15) "myIterator::key" // Devuelve la clave del elemento actual $this->position = 1 int(1) //var_dump($clave) string(12) "segundoelemento" //var_dump($valor) string(16) "myIterator::next" //Avanzar al siguiente elemento++$this->position=2 string(17) "myIterator::valid" //Verifica si el elemento actual $this->array[2] es válido y continúa la ejecución si es válido; string(19) "myIterator::current" //Repetir los pasos anteriores string(15) "myIterator::key" //Repetir los pasos anteriores int(2) //Repetir los pasos anteriores string(11) "lastelement" //Repetir los pasos anteriores string(16) "myIterator::next" //Avanzar al siguiente elemento++$this->position=3 string(17) "myIterator::valid" //Verifica si el elemento actual $this->array[3] es válido, sal del recorrido si no es válido
Lo anterior es un análisis del principio de funcionamiento del iterador PHP, espero que sea útil para todos.