PHP迭代器 Iterator

Iterator是PHP自带的迭代器接口。

实现该接口的类必须实现该接口的方法,以便能够使用foreach进行输出迭代后的数据。

interface Iterator extends Traversable {
  /*获取当前元素*/
public function current();
  /*移动到下一个元素*/
public function next();
  /*获取当前元素的键值*/
public function key();
  /*验证当前位置是否有效*/
public function valid();
  /*返回到迭代器的第一个元素*/
public function rewind(); }

当一个类实现该接口后,在使用foreach遍历时,将会执行如下操作:

  1. 依次执行rewind、valid、current方法(视foreach的参数决定是否执行key方法)
  2. 循环执行next、valid、current方法(视foreach的参数决定是否执行key方法),直到valid方法返回false

官方示例:

<?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 "
";
}

本文来自博客园,作者:Bin_x,转载请注明原文链接:https://www.cnblogs.com/Bin-x/p/6362699.html

原文地址:https://www.cnblogs.com/Bin-x/p/6362699.html