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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
php字符串截取中文截取2,单字节截取模式
Dec 10 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
PHP实现读取一个1G的文件大小
Aug 24 PHP
php生成EAN_13标准条形码实例
Nov 13 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
简单介绍PHP的责任链编程模式
Aug 11 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
PHP7 其他语言层面的修改
Mar 09 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Python入门之三角函数atan2()函数详解
2017/11/08 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
使用python turtle画高达
2020/01/19 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
学校消防安全制度
2014/01/30 职场文书
课例研修方案
2014/05/31 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
村委会贫困证明范文
2014/09/21 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
八月迷情观后感
2015/06/11 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书