ホームページ  >  記事  >  バックエンド開発  >  php - イテレータインターフェイス

php - イテレータインターフェイス

伊谢尔伦
伊谢尔伦オリジナル
2016-11-22 11:05:011147ブラウズ

独自の外部イテレータまたはクラスのインターフェイスを使用して内部的に反復処理できます。

インターフェースの概要

Iterator extends Traversable {
    /* 方法 */
    abstract public mixed current ( void )
    abstract public scalar key ( void )
    abstract public void next ( void )
    abstract public void rewind ( void )
    abstract public boolean valid ( void )
}

定義済みイテレータ

PHP は、SPL イテレータなど、日常のタスク用にいくつかのイテレータをすでに提供しています。

例 #1 基本的な使用法

この例は、foreach を使用する場合の反復子メソッドの呼び出しシーケンスを示しています。

<?php
    class myIterator implements Iterator {
        private $position = 0;
        private $array = array(
            "firstelement",
            "secondelement",
            "lastelement",
        );
        public function __construct() {
            $this->position = 0;
        }
        function rewind() {
            var_dump(__METHOD__);
            $this->position = 0;
        }
        function current() {
            var_dump(__METHOD__);
            return $this->array[$this->position];
        }
        function key() {
            var_dump(__METHOD__);
            return $this->position;
        }
        function next() {
            var_dump(__METHOD__);
            ++$this->position;
        }
        function valid() {
            var_dump(__METHOD__);
            return isset($this->array[$this->position]);
        }
    }
    $it = new myIterator;
    foreach($it as $key => $value) {
        var_dump($key, $value);
        echo "\n";
    }
?>

上記のルーチンの出力は次のようになります。

string(18) "myIterator::rewind"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(0)
string(12) "firstelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(1)
string(13) "secondelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(2)
string(11) "lastelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"

Method list

Iterator::current — 現在の要素を返す

Iterator::key — 現在の要素のキーを返す

Iterator::next —次の An 要素に進みます

Iterator::rewind — イテレータの最初の要素を返します

Iterator::valid — 現在の位置が有効かどうかを確認します


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。