Php/docs/class.seekableiterator

提供:Dev Guides
< Php
移動先:案内検索

(PHP 5 >= 5.1.0, PHP 7)

はじめに

Seekable イテレータです。


インターフェイス概要


SeekableIterator extends Iterator {

/* メソッド */

abstract public seek ( int $position ) : void

/* 継承したメソッド */

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

}

例1 基本的な使用法

この例では、SeekableIterator を作成して位置を移動し、無効な位置を扱います。


<?phpclass MySeekableIterator implements SeekableIterator {    private $position;    private $array = array(        "first element",        "second element",        "third element",        "fourth element"    );    /* SeekableIterator インターフェイスで必要なメソッド群 */    public function seek($position) {      if (!isset($this->array[$position])) {          throw new OutOfBoundsException("invalid seek position ($position)");      }      $this->position = $position;    }    /* Iterator インターフェイスで必要なメソッド群 */        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();}?>

上の例の出力は、 たとえば以下のようになります。


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

目次