Принцип работы
1. Перед первой итерацией запустите метод iterator::rewind().
Запускается только один раз, возвращает первый элемент итератора, но метод не имеет возвращаемого значения.
2. Проверьте, действителен ли первый элемент.
Методы аутентификации можно настроить. Если возвращаемое значение истинно, выполнение продолжается; если возвращаемое значение ложно, итерация завершается.
3. foreach продолжает вызывать Iterator.
Возвращает ключ и значение указанной функции.
4. Тело метода foreach
var_dump($ключ,$значение)
5. После каждой итерации вызывайте итератор для определения следующего элемента и повторяйте второй шаг.
Пример
string(18) "myIterator::rewind" //Вызов метода перемотки до начала итерации, возврат к первому элементу итератора и выполнение $this->position = 1; string(17) "myIterator::valid" //Проверяем, действителен ли текущий элемент $this->array[1], и продолжаем выполнение, если он действителен; string(19) "myIterator::current" // Возвращаем значение, соответствующее текущему элементу $this->array[0]='firstelement' string(15) "myIterator::key" // Возвращает ключ текущего элемента $this->position = 1 int(1) //var_dump($key) string(12) "второй элемент" //var_dump($value) string(16) "myIterator::next" //Перейти к следующему элементу++$this->position=2 string(17) "myIterator::valid" //Проверяем, действителен ли текущий элемент $this->array[2], и продолжаем выполнение, если он действителен; string(19) "myIterator::current" //Повторяем предыдущие шаги string(15) "myIterator::key" //Повторяем предыдущие шаги int(2) //Повторяем предыдущие шаги string(11) "lastelement" //Повторяем предыдущие шаги string(16) "myIterator::next" //Перейти к следующему элементу++$this->position=3 string(17) "myIterator::valid" //Проверяем, действителен ли текущий элемент $this->array[3], выходим из обхода, если он недействителен
Выше приведен анализ принципа работы итератора PHP, надеюсь, он будет полезен всем.