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 相关文章推荐
PHP 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
ThinkPHP路由详解
Jul 27 PHP
nginx下安装php7+php5
Jul 31 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
PHP获取二叉树镜像的方法
Jan 17 PHP
PHP读取文件或采集时解决中文乱码
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中的正规表达式(二)
2006/10/09 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
CI框架表单验证实例详解
2016/11/21 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
js资料toString 方法
2007/03/13 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
python多维数组切片方法
2018/04/13 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
Flask之flask-script模块使用
2018/07/26 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
Numpy 多维数据数组的实现
2020/06/18 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
《长城》教学反思
2014/02/14 职场文书
合伙协议书
2014/04/23 职场文书
护士实习求职信
2014/06/22 职场文书
小学捐书活动总结
2014/07/05 职场文书
管理工程专业求职信
2014/08/10 职场文书
夏季药店促销方案
2014/08/22 职场文书
优秀教师申报材料
2014/12/16 职场文书
初三英语教学计划
2015/01/23 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
面试复试通知单
2015/04/24 职场文书
python微信智能AI机器人实现多种支付方式
2022/04/12 Python
golang语言指针操作
2022/04/14 Golang