The SeekableIterator interface

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

Introduction

The Seekable iterator.

Interface synopsis

interface SeekableIterator extends Iterator {
/* Methods */
public seek(int $offset): void
/* Inherited methods */
public Iterator::next(): void
public Iterator::rewind(): void
public Iterator::valid(): bool
}

Example #1 Basic usage

This example demonstrates creating a custom SeekableIterator, seeking to a position and handling an invalid position.

<?phpclass MySeekableIterator implements SeekableIterator {    private $position;    private $array = array(        "first element",        "second element",        "third element",        "fourth element"    );    /* Method required for SeekableIterator interface */    public function seek($position) {      if (!isset($this->array[$position])) {          throw new OutOfBoundsException("invalid seek position ($position)");      }      $this->position = $position;    }    /* Methods required for Iterator interface */        public function rewind() {        $this->position = 0;    }    public function current() {        return $this->array[$this->position];    }    public function key() {        return $this->position;    }    public function next() {        ++$this->position;    }    public function valid() {        return isset($this->array[$this->position]);    }}try {    $it = new MySeekableIterator;    echo $it->current(), "\n";        $it->seek(2);    echo $it->current(), "\n";        $it->seek(1);    echo $it->current(), "\n";        $it->seek(10);    } catch (OutOfBoundsException $e) {    echo $e->getMessage();}?>

The above example will output something similar to:

first element
third element
second element
invalid seek position (10)

Table of Contents