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

  • 相关阅读:
    启动Mysql后找不到服务或出现找不到指定文件
    WEB-MVC模式图示
    Java中Map集合的遍历方式
    sun.misc.BASE64Encoder找不到jar包的解决方法
    Tomcat常用的网站发布方式
    Sql Server查询行号
    Mysql下载安装问题
    【数学】环逆序
    【搜索】【the first editoral】OpenJudge 我是最快的马
    The First Blog
  • 原文地址:https://www.cnblogs.com/Bin-x/p/6362699.html
Copyright © 2011-2022 走看看