Php/docs/class.seekableiterator

From Get docs

(PHP 5 >= 5.1.0, PHP 7)

Introduction

The Seekable iterator.


Interface synopsis


SeekableIterator extends Iterator {

/* Methods */

abstract public seek ( int $position ) : void

/* Inherited methods */

abstract public Iterator::current ( ) : mixed

abstract public Iterator::key ( ) : scalar

abstract public Iterator::next ( ) : void

abstract public Iterator::rewind ( ) : void

abstract 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