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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
PHP面向对象编程快速入门
Oct 09 PHP
删除无限分类并同时删除它下面的所有子分类的方法
Aug 08 PHP
PHP 截取字符串专题集合
Aug 19 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
php删除文本文件中重复行的方法
Apr 28 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
Aug 21 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
swoole锁的机制代码实例讲解
Mar 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
简单介绍Python中的几种数据类型
2016/01/02 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
python算法题 链表反转详解
2019/07/02 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
python里glob模块知识点总结
2021/01/05 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
联片教研活动总结
2014/07/01 职场文书
合作协议书模板2014
2014/09/26 职场文书
师德师风剖析材料
2014/09/30 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
货款欠条范本
2015/07/03 职场文书