Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник PHP

Iterator

Интерфейс с пятью методами для ручного управления перебором.

Синтаксис

class Name implements Iterator

Возвращаемое значение

IteratorМетоды `current()`, `key()`, `next()`, `rewind()`, `valid()`.

Примеры

Диапазон чисел с шагом:

<?php
 
class Steps implements Iterator
{
    private int $value;
 
    public function __construct(private int $from, private int $to, private int $step) {}
 
    public function rewind(): void { $this->value = $this->from; }
    public function valid(): bool { return $this->value <= $this->to; }
    public function current(): int { return $this->value; }
    public function key(): int { return ($this->value - $this->from) / $this->step; }
    public function next(): void { $this->value += $this->step; }
}
 
foreach (new Steps(10, 30, 10) as $key => $value) {
    echo $key, '=', $value, ' ';
}

Результат:

0=10 1=20 2=30

Примечания

foreach вызывает методы в порядке: rewind(), затем на каждом шаге valid(), current(), key() и next(). Генератор делает то же самое намного короче.

См. также

  • IteratorAggregate — Интерфейс объектов, которые можно перебрать в `foreach`.
  • Generator — Объект, который возвращает функция с `yield`.
  • current — Возвращает элемент, на который указывает внутренний указатель массива.

В учебнике

  • Встроенные интерфейсы — Интерфейсы PHP, которые учат объект вести себя как массив — Countable, IteratorAggregate, ArrayAccess, JsonSerializable и Stringable.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.