zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    第四次团队作业
    第三次团队作业博客——系统设计
    第二次团队作业博客
    第一次团队作业博客
    团队作业——总结
    软件工程课程总结
    Beta冲刺提交-星期三
    个人作业-Alpha项目测试
    第四次团队作业
    第三次团队作业——系统设计
  • 原文地址:https://www.cnblogs.com/Bin-x/p/6362699.html
Copyright © 2011-2022 走看看