php—Iterator接口

伊谢尔伦
伊谢尔伦 原创
2016-11-22 11:05:01 778浏览

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

接口摘要

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 — 检查当前位置是否有效


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。