当前位置:Gxlcms > PHP教程 > php—Iterator接口

php—Iterator接口

时间:2021-07-01 10:21:17 帮助过:12人阅读

可在内部迭代自己的外部迭代器或类的接口。

接口摘要

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迭代器。

范例

Example #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"

方法列表

Iterator::current — 返回当前元素

Iterator::key — 返回当前元素的键

Iterator::next — 向前移动到下一个元素

Iterator::rewind — 返回到迭代器的第一个元素

Iterator::valid — 检查当前位置是否有效

人气教程排行