首页 > Web开发 > 详细

PHP迭代器 Iterator

时间:2017-02-03 15:43:41      阅读:228      评论:0      收藏:0      [点我收藏+]

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 "\n";
}

 

PHP迭代器 Iterator

原文:http://www.cnblogs.com/Bin-x/p/6362699.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!