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 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
php实现首页链接查询 友情链接检查的代码
Jan 05 PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
smarty简单入门实例
Nov 28 PHP
php查看当前Session的ID实例
Mar 16 PHP
php实现统计网站在线人数的方法
May 12 PHP
yii用户注册表单验证实例
Dec 26 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 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(三)
2012/03/22 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
Bookmarklet实现启动jQuery(模仿 云输入法)
2010/09/15 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
十个Python程序员易犯的错误
2015/12/15 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
python判断链表是否有环的实例代码
2020/01/31 Python
python sleep和wait对比总结
2021/02/03 Python
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
马来西亚网上购物:Youbeli
2018/03/30 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
广告学毕业生求职信
2014/01/30 职场文书
公司业务员岗位职责
2014/03/18 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS