PHP预定义接口――Iterator用法示例


Posted in PHP onJune 05, 2020

本文实例讲述了PHP预定义接口——Iterator用法。分享给大家供大家参考,具体如下:

Iterator(迭代器)接口

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

接口摘要

Iterator extends Traversable {
    /* 方法 */
    abstract public current ( void ) : mixed
    abstract public key ( void ) : scalar
    abstract public next ( void ) : void
    abstract public rewind ( void ) : void
    abstract public valid ( void ) : bool
}

例:

<?php
class myIterator implements Iterator
{
  private $position = 0;
  private $array = array(
    'first_element',
    'second_element',
    'last_element',
  );

  /**
   * 重置键的位置
   */
  public function rewind(): void
  {
    var_dump(__METHOD__);
    $this->position = 0;
  }

  /**
   * 返回当前元素
   */
  public function current()
  {
    var_dump(__METHOD__);
    return $this->array[$this->position];
  }

  /**
   * 返回当前元素的键
   * @return int
   */
  public function key(): int
  {
    var_dump(__METHOD__);
    return $this->position;
  }

  /**
   * 将键移动到下一位
   */
  public function next(): void
  {
    var_dump(__METHOD__);
    ++$this->position;
  }

  /**
   * 判断键所在位置的元素是否存在
   * @return bool
   */
  public function valid(): bool
  {
    var_dump(__METHOD__);
    return isset($this->array[$this->position]);
  }
}

$it = new myIterator;

foreach ($it as $key => $value) {
  var_dump($key, $value);
  echo "\n";
}

输出结果:

string 'myIterator::rewind' (length=18)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 0
string 'first_element' (length=13)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 1
string 'second_element' (length=14)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 2
string 'last_element' (length=12)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)

由结果可知,当类实现了Iterator接口,实现改类实例数据集的时候首先会将数据集的键重置,然后逐步后移,每次都会进行然后返回当前元素以及当前键。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
ADODB类使用
Nov 25 PHP
php 分页类 扩展代码
Jun 11 PHP
php分页思路以及在ZF中的使用
May 30 PHP
Apache服务器无法使用的解决方法
May 08 PHP
CI框架入门示例之数据库取数据完整实现方法
Nov 05 PHP
PHP中require和include路径问题详解
Dec 25 PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 PHP
深入浅出php socket编程
May 13 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
php之可变函数的实例详解
Sep 13 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 PHP
PHP常用字符串函数用法实例总结
Jun 04 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 #PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 #PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 #PHP
如何在PHP中生成随机数
Jun 04 #PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 #PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 #PHP
PHP常用字符串函数用法实例总结
Jun 04 #PHP
You might like
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
node.js require() 源码解读
2015/12/13 Javascript
JavaScript中的this机制
2016/01/30 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
Python httplib模块使用实例
2015/04/11 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
python和php哪个容易学
2020/06/19 Python
python绘制趋势图的示例
2020/09/17 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
物流仓管员岗位职责
2013/12/04 职场文书
师范毕业生自我鉴定
2014/01/15 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
销售顾问工作计划书
2014/08/15 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
2015年党性分析材料
2014/12/19 职场文书
雾霾停课通知
2015/04/24 职场文书
雷锋的观后感
2015/06/10 职场文书
婚礼家长致辞
2015/07/27 职场文书
商业计划书格式、范文
2019/03/21 职场文书
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis